В сегодняшней статье речь пойдет о проприетарном протоколе компании Cisco Systems - SCCP – (Skinny Client Control Protocol), который предназначен для построения корпоративных телефонных сетей на основе продуктов Cisco, таких как:
- IP-Телефоны серии 7900
- Софт-фоны Cisco IP communicator
- Cisco Unified Communications Manager
- Cisco Unity
Стоит заметить, что в телефонии существует ещё один протокол с абсолютно идентичной аббревиатурой – SCCP – Signalling Connection and Control Protocol, однако данный протокол относится к сигнализации ОКС-7, тогда как SCCP – (Skinny Client Control Protocol) работает в стеке TCP/IP.
Протокол SCCP занимает то же самое место в VoIP что и SIP, H.323 и MGCP и выполняет те же самые функции. Однако, в отличие от всех перечисленных протоколов, имеет гораздо более простой синтаксис и требует меньше компьютерных ресурсов для обработки своих сообщений.
Как и большинство VoIP протоколов SCCP предназначен для обмена сигнальными сообщениями между клиентом и сервером в процессе установления и завершения звонка.
В процессе передачи речевых данных SCCP не участвует, для этих целей служит протокол RTP - (Real-Time Transport Protocol). Кроме того, стоит отметить, что в SCCP не используется RTСP - (Real-Time Transport Control Protocol), который передает диагностическую информацию о текущем соединении. Для этих целей в SCCP имеются собственные механизмы.
Как уже было замечено, Протокол SCCP имеет очень простой синтаксис. По заголовку того или иного сообщения можно однозначно определить в каком статусе находится текущее соединение, что делает Протокол SCCP крайне удобным при траблшутинге. Для передачи сообщений SCCP используется TCP (Transmission Control Protocol) well-known порт 2000.
Соединение по SCCP невозможно рассматривать без сервера (чаще всего CUCM). SCCP имеет большое множество сообщений и отправляет их на сервер по каждому поводу, ожидая руководства к дальнейшим действиям. Выглядит это примерно так:
- IP-Телефон: StationInit: Кто-то снял телефонную трубку
- Сервер: StationD: Включи зуммер
- Сервер: StationD: Выведи на дисплее сообщение “Введите номер”“
- IP-Телефон: StationInit: Начинаю вызывать абонента, первая цифра его номера – “4”
- IP-Телефон: StationInit: Вторая цифра – “7”
Каждое событие фиксируется вплоть до получения сервером сообщения о том, что телефонная трубка снова в исходном положении.
Обратите внимание, что сообщения SCCP отправляются как в сторону клиента, так и сторону сервера, поэтому для определения источника сообщения используются идентификаторы. StationInit, если источником является клиент и StationIniD, если источником является сервер телефонии. Таким образом появляется возможность в мельчайших деталях отследить любой звонок, совершенный внутри корпоративной сети.
Приведем пример некоторых сообщений SCCP:
- 0x0000 - Keep Alive Message – Отправляется от сервера к клиенту сразу после регистрации
- 0x0001 - Station Register Message – Запрос регистрации на сервере
- 0x0002 - Station IP Port Message – Отправляет клиент. Номер UDP порта для RTP сессии
- 0x0006 - Station Off Hook Message – Отправляет клиент. Снятие телефонной трубки
- 0x0099 - Station Display Text Message – Выводит на дисплей сообщение “Введите номер”
- 0x0082 - Station Start Tone Message – Включает зумер.
- 0x27 - Station Soft Key Event Message (new call/end call) – Если это начало вызова, то данное сообщение содержит первую цифру номера вызываемого абонента. Может также содержать промежуточные цифры номера, а также запрос на разрыв соединения (end call)
- 0x107 - Station Connection Statistics Request Message – Отправляется клиентом. Запрос диагностической информации (информации о задержках и потерях медиа-пакетов, джиттер-буфере, принятых и отправленных пакетах и т.д. ). Это тот самый механизм, который компенсирует отсутствие RTCP.
Как видно из данного примера, MessageID каждого сообщения крайне точно описывает соответствующее ему событие, поэтому чтение трассировок SCCP обычно не составляет труда.
Стоит также добавить, что некоторые компании, занимающиеся разработкой голосовых решений, такие как: Digium, SocketIP и Symbol Technologies, добавили поддержку протокола SCCP в свои продукты.