Wednesday, March 12, 2008

Practical SS7. Part 1

Вместо введения
Многие из нас готовы ринуться в бой, изучить всё и вся, но не могут сделать первый шаг. Очень часто, причина этого слишком большой объём информации вокруг нас. Да, именно так. Задавшись целью попрактиковаться с 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).

6 коментарі:

alektrik said...

Немогу скачать архив с mtu.exe и mtr.exe. Автор, плс выложи его куда-нибудь еще.

Bogdan said...

2 alektrik: перезалил, скачивай.

Anonymous said...

Могли ли бы Вы еще раз залить архив с MTU и MTR, а также конфигурационными файлами или подскажите, где их можно скачать.
Заранее спасибо.

Bogdan said...

Перезалил, можете скачивать.

Raven said...

При запуске gctload вначале все идет хорошо, загружаются модули M2PA, MTP3, SCCP, TCAP, MAP.

после этого идет лог сообщений S7_MGT и все заканчивается следующим:

Resetting SCTPD fails
S7MGT: FAILED

Это на обоих хостах. Можете подсказать в чем может быть дело? Спасибо.

Bogdan said...

Маловато информации, а ошибка не сильно информативная. config.txt и system.txt из архива (SIGTRAN M2PA lab instructions.zip) были?
sctpd.exe в папке Септела присутствует?