3.12.2008

Practical SS7. Part 1

Внимание! Информация немного устарела, поэтому дополнительно прочтите статью "Practical SS7, Part 3"

Вместо введения
Многие из нас готовы ринуться в бой, изучить всё и вся, но не могут сделать первый шаг. Очень часто, причина этого слишком большой объём информации вокруг нас. Да, именно так. Задавшись целью попрактиковаться с SS7, вы найдёте массу информации, но вот с чего начать понять трудно. Есть масса реализаций, часть из них даже открытые. И если потратить пару недель, то в итоге можно найти простую и работающую реализацию. Но кто даст гарантию, что вашего терпения на столько хватит? :)


О чём эта статья?
Ниже я собираюсь рассказать и показать, как запустить полноценный рабочий стек SS7 на обычном компьютере. От вас не потребуется ни покупки сигнальных карт, ни установки специальных операционных систем, ни часов компиляции с кучей ошибок. Всё что нужно это просто скачать, распаковать, немного настроить и запустить.

Описание технологии
Я надеюсь, что вы уже хоть немного понимаете, что такое SS7 и каким образом сообщения передаются на физическом/канальном уровне. Вариантов на самом деле немного. Это может быть классический поток E1 (вернее тайм-слоты в этом потоке, 16 максимум), либо SigTRAN (технология передачи сигнальных сообщений через IP сеть).
Раз уж я сказал, что специальных плат покупать не придётся, то логично предположить, что наш практикум будет использовать SigTRAN для передачи сообщений между узлами.
Теперь самый неприятный момент: для тестов нужны 2 хоста. Не обязательно 2 компьютера (хотя это и самый простой вариант), можно один компьютер с Vmware (с установленным Linux или Windows).
Использоваться будет стек от компании Dialogic. Стек модульный, может использоваться как для классического SS7 (Dialogic выпускает специальные сигнальные карты для этого), так и с SigTRAN. Поскольку это промышленное решение (я его использую в своей работе, например), то оно стоит денег. Но для целей разработки есть возможность использовать стек в «триальном» режиме – 10 часов. После этого все приложения следует перезапустить. Для нас с вами это ограничение вовсе и не ограничение, а для систем 24/7 конечно покупают лицензию.
Сам стек, как я сказал, модульный. Есть несколько разных модулей для реализации различных типов SigTRAN - M2PA, M2UA, M3UA и SUA. Не буду вас пока пугать расшифровкой этих терминов, а скажу, что мы будем использовать «самый простой» тип – M2PA. Для проведения тестов мы установим и настроим такой вот стек протоколов:
M2PA->MTP3->SCCP->TCAP->MAP. Далее специальное приложение будет отправлять SMS через MAP на второй хост, где другое приложение будет получать эту смс.

Процесс установки
Далее я буду рассматривать процесс установки для Windows.
1. Заходим на сайт Dialogic
2. Выбираем «SS7 Development Package for Windows», скачиваем и устанавливаем. Когда установщик предложит выбрать тип карты (SS7HD или SPCI2S), не выбираем ни одну из карт.
3. Заходим на вторую страничку
4. Скачиваем в c:\septel следующие файлы: «Binary for Windows – MTP3», «Binary for Windows – SCCP», «Binary for Windows – TCAP», «Binary for Windows – MAP» и «Binary for Windows – M2PA».
5. Скачиваем Wireshark (свободнораспростаняемый анализатор протоколов).

Процесс настройки
Теперь надо определиться, кто будет отправлять SMS, а кто получать. У нас всего 2 хоста, поэтому один из них будет отправителем (MTU), а второй получателем (MTR). После того, как определились, выполняем всё строго по пунктам:
1. Проверяем через ipconfig IP адреса обоих хостов. На всякий случай отключаем Firewalls, проверяем что хосты «видят» друг-друга (с помощью ping, например).
2. Скачиваем архив, откуда изымаем mtr.exe и mtu.exe. Копируем их в c:\septel на соотвествующих хостах (MTU и MTR).
3. В этом же архиве содержаться начальные файлы конфигурации, которые нужно записать в c:\septel под именами config.txt и system.txt:
config.mtr.txt записываем как config.txt на хост MTR
config.mtu.txt записываем как config.txt на хост MTU
В зависимости от типа операционной системы записываем в c:\septel на обоих хостах под именем system.txt файл system.linux.txt или system.windows.txt.
4. Редактируем config.txt на обоих хостах:
В CNSYS:IPADDR устанавливаем локальный IP адрес (из п.1)
В SNSLI:SNLINK устанавливаем IP адрес второго хоста.
Естественно, что на втором хосте в config.txt IP адреса просто меняются местами.

Тестирование
1. На каждом из хостов необходимо по 2 консоли. В MS Windows это делается через Пуск-Выполнить-cmd.
2. В первой консоли выполните 2 команды
cd c:\septel
gctload –d
Если запуск произошёл успешно (последнее сообщение будет S7_MGT Boot Complete), то переходим к пункту 3. Если нет, то пишем комментарий внизу страницы, где просим помочь разобраться ))
3. Во второй консоли выполните
cd c:\septel
mtpsl act 0 0
Как только вы выполните эту команду на обоих хостах, это активирует M2PA линк. В окне должно появиться: point code=00000001 Destination available
4. Чтобы остановить стек, выполните gctload –x

Анализ полученных результатов
В результате проделанных выше действий мы получили полноценный стек протоколов ОКС (SS7). В следующей статье я расскажу как и для чего его можно использовать (не зря же вы устанавливали приложения mtu и mtr).