Что такое SIM-банк и как он работает

Такие устройства, как VoIP GSM шлюзы пользуются растущей популярностью среди российских компаний и предпринимателей. Сфера их применения достаточно широка – начиная с экономии средств компании на звонках по мобильным номерам, заканчивая различными SMS-рассылками. Потребности многих компаний не ограничиваются одним, даже самым мощным, шлюзом. При использовании же нескольких подобных устройств, особенно распределенных территориально, трудозатраты по их поддержке и администрированию возрастают значительно. Устройства под названием SIM-банки позволяют не только упростить работу с несколькими VoIP GSM шлюзами, но и добавить последним множество интересных возможностей. Сегодня, на примере SIM-банков SMB32 и SMB128 мы познакомимся и научимся работать с данным классом устройств.

Что такое SIM-банк

SIM банк — это устройство агрегации SIM карт в одном месте. Проще говоря, это устройство, в которое физически подключаются SIM карты, а связь SIM карты с GSM шлюзом осуществляется через IP сеть. Это значит, что GSM-шлюзы могут быть установлены где угодно – даже в разных городах и странах, в то время как сами SIM-карты будут всегда у вас под рукой. При этом, для оператора связи точкой регистрации SIM карты будет расположение того шлюза, с которым она сейчас работает, а не действительное её месторасположение.

Агрегация множества SIM-карт в одном устройстве – это основная функция SIM-банка. Но также он может выполнять и другие функции, например:

Благодаря SIM банку можно в любой момент поменять местами SIM карты в шлюзах, расположенных в разных частях города или запрограммировать сценарий, по которому SIM-карты будут автоматически привязываться к другому GSM шлюзу и, тем самым, создать иллюзию передвижения SIM карты для оператора связи.

Какими SIM-банки бывают

Пожалуй, самыми популярными на сегодняшний день устройствами класса SIM-банк являются те, что выпускаются под названием GoIP. Есть модель SMB32 на 32 SIM-карты, а есть модель SMB128, соответственно, на 128 SIM-карт. У нас под рукой оказалась старшая модель и пара четырехканальных VoIP GSM шлюзов GoIP 4. Описанные в статье настройки будут также применимы и к младшей модели SMB32 и к другим моделям VoIP GSM шлюзов GoIP (на один канал, на восемь, на шестнадцать).

А вот на что следует обратить внимание, так это на производителя устройств. По славной китайской традиции VoIP GSM шлюзы под названием GoIP выпускают как минимум две компании — Hybertone и DBL. Несмотря на то, что на аппаратном уровне эти устройства идентичны, они могут иметь различия в ПО. Все описанное в этой статье применимо к GSM шлюзам и SIP-банкам производства компании DBL. Гарантировать применимость данных настроек к устройствам Hybertone, я, к сожалению, не могу.

Для полноты картины стоит отметить, что также SIM-банки выпускает и другой производитель VoIP GSM шлюзов – компания Dinstar. У них есть модели на 64 и 128 SIM-карт, однако поработать с ними пока, к сожалению, не доводилось.

Режимы работы SIM-банка

SIM-банки GoIP могут работать в двух режимах: выступать в качестве сервера для GSM-шлюзов или работать совместно с бесплатным ПО SMB Scheduler Server. Первый вариант более простой, но имеет некоторые ограничения. Он подходит для тех компаний, которые используют один SIM-банк и не планируют передавать SIM-карты в нем между различными шлюзами. Работа с SMB Scheduler Server лишена этих ограничений – по заявлению разработчиков, поддерживается до 10000 SIM-карт, а также возможности их распределения как между каналами одного шлюза, так и между самими шлюзами.

Мы рассмотрим оба этих варианта работы – от простого к сложному. Но сначала необходимо зарегистрировать наши GSM-шлюзы на IP-АТС, в нашем случае это будет – Asterisk. Те, кто хорошо знаком и с VoIP GSM-шлюзами GoIP, и с Asterisk, могут просто пропустить следующий раздел.

Подключение шлюза GoIP к SIP серверу Астериск

Вначале совсем немного теории. GSM-шлюзы GoIP могут регистрироваться на SIP-сервере четырьмя различными способами:

Для базовой настройки связки GoIP – Asterisk мы будем использовать четвертый вариант, но в режиме с регистрацией. Все входящие на SIM-карты вызовы мы будем отправлять на некоторый внутренний номер на АТС. Исходящие вызовы будем маршрутизировать на основе префиксов: в зависимости от того, через какую SIM-карту требуется направить вызов, Asterisk будет подставлять в вызываемый номер определенный префикс. Шлюз будет анализировать префикс, после чего отбросит его и направит вызов через нужную SIM-карту (канал).

В Астериске создаем SIP пир для нашего шлюза с параметром Line ID – 70064 (это последние пять цифр серийного номера шлюза, для удобства):

файл /etc/asterisk/sip.conf:

[goip70064]
type=friend
host=dynamic
defaultuser=goip70064
secret=pass70064
qualify=yes
dtmfmode=rfc2833
context=from-trunk-sip-goip70064

Как я уже говорил, GSM шлюз в нашем примере будет распределять исходящие вызовы по своим линиям, основываясь на префиксе номера. Но для этого нам надо, чтобы Asterisk добавлял эти префиксы к номерам, руководствуясь какой-то логикой. В нашем случае особой логики не будет – Asterisk будет по очереди добавлять префиксы 011, 012, 013 и 014 (которые соответствуют 1-4 линиям шлюза) пока не найдет свободную линию и вызов не пройдет. Играясь с маской номера, можно построить более гибкую логику выбора исходящей линии, основанную, к примеру, на том, какому оператору связи принадлежит вызываемый номер.

файл /etc/asterisk/sip.conf:

[from-phones]
exten => _8XXXXXXXXXX,1,Dial(SIP/goip70064/011${EXTEN}) ; Звонок через первую GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/012${EXTEN}) ; Звонок через вторую GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/013${EXTEN}) ; Звонок через третью GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/014${EXTEN}) ; Звонок через четвертую GSM линию
exten => _8XXXXXXXXXX,n,Hangup()

Теперь в web-интерфейсе GoIP переходим в раздел Configurations — Basic VoIP. Для опции Config Mode выбираем вариант Trunk Gateway Mode — ниже отобразятся соответствующие настройки для этого режима. В опции SIP Trunk Gateway1 указываем IP адрес нашего SIP сервера или его доменное имя. В опции Phone Number указывается имя пира, созданного на стороне SIP сервера, в нашем случае — это goip70064. Re-register Period(s) — указывается интервал времени в секундах для повторной регистрации на SIP сервере; мы указали 60 секунд, если указать 0 — то регистрация осуществляться не будет. Далее идёт опция Authentication ID, где указывается имя для аутентификации шлюза на SIP сервере и часто совпадает с именем SIP пира, в нашем случае — это опять же goip70064. Затем указывается пароль в опции Password, мы указали — pass70064. В последней опции, Routing Prefix — указывается префикс, по которому будут распределяться исходящие вызовы между GSM линиями. В файле extensions.conf в Asterisk мы использовали префиксы 011 – 014, поэтому именно их и следует указать здесь:

После основных настроек подключения, добавим настройки входящей и исходящей маршрутизации. Настройка входящей маршрутизации доступна в разделе Configuration — Call In. Здесь достаточно указать для каждой линии в опции Forwarding to VoIP Number — номер, который будет вызываться на IP-АТС. В нашем случае я указал просто 5555 для всех линий. Для того, чтобы просто проверить, что вызовы действительно приходят с наших GSM линий на SIP сервер, этого будет вполне достаточно.

Настройка исходящей маршрутизации осуществляется в разделе Configuration — Call out. Для каждой линии настраивается параметр Dial Plan, в котором нужно прописать правило, которое будет удалять префикс (тот самый префикс, который мы задали в разделе Configurations — Basic VoIP) в начале вызываемого номера:

Для нашего примера данных настроек будет вполне достаточно: мы сможем совершать звонки через линии шлюза GoIP, добавляя к вызываемым номерам соответствующий префикс, а так же принимать звонки с любой GSM линии, направляя их всех на внутренний номер 5555, заведенный на Asterisk. Аналогичные настройки мы произвели и для второго шлюза GoIP, который также будет работать с нашим SIM-банком.

SIM-банк в роли сервера

Подключение шлюза GoIP к SIM-банку

Теперь подключим наши GSM-шлюзы GoIP 4 к SIM-банку SMB128, работающему в режиме сервера. Для этого необходимо перевести SIM-банк в режим работы сервера и добавить учетные записи для каждого GoIP шлюза. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Settings и в опции Operation Mode выбираем вариант Use Buil-in SIM Server. В разделе GoIP Clients, добавляем необходимое количество учетных записей для каждого шлюза GoIP. Потребуется заполнить следующие поля:

В нашем примере получились такие настройки (другие опции остались в значении по умолчанию):

Далее, подключаем шлюзы GoIP к SIM банку. В Web-интерфейсе шлюза GoIP переходим в раздел Configurations — Preferences. Переводим опцию Remote Server в состояние Enable, после чего появятся дополнительные опции. Remote SIM переключаем в состояние Enable — тем самым, указывая шлюзу использовать режим работы с удаленным SIM сервером. В опции Server указываем IP адрес SIM-банка или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый Login ID, который мы использовали при заведении учетной записи в SIM банке. В опции Password указываем соответствующий пароль.

Правила распределения SIM-карт

Как уже было сказано, режим работы SIM-банка в качестве сервера имеет некоторые ограничения. Самое главное из них заключается в том, что каждому каналу каждого GSM-шлюза выделяется собственный диапазон SIM-карт, который не может использоваться другими каналами. То есть, весь диапазон SIM-карт разбивается на несколько непересекающихся множеств, каждое из которых назначается определенному GSM-каналу.

Выглядит это следующим образом: в разделе Configurations — SIM Bank Settings Web-интерфейса SIM-банка есть опция # of SIM slots reserved per line, в которой указывается количество SIM-карт, которое может быть использовано каждым из каналов. В нашем примере у нас есть два четырехпортовых шлюза GoIP4, итого – 8 каналов. Если в этой опции мы укажем, например, значение «3», то первому каналу первого шлюза будут доступны SIM-карты №1, №2 и №3, второму каналу первого шлюза — №4, №5 и №6, а первому каналу второго шлюза — №13, №14 и №15.

После того, как мы выделили каждому каналу его множество SIM-карт, требуется дать ответы на два вопроса: во-первых, какое событие должно произойти, чтобы SIM-банк заменил для GSM-канала текущую SIM-карту на другую, из назначенного каналу множества. Во-вторых, на какую именно SIM-карту при наступлении этого события следует произвести замену? Ответ на первый вопрос мы дадим в следующем разделе, а вот на второй вопрос отвечает опция SIM Schedule Mode. Доступны следующие методы выбора рабочей SIM-карты:

Условия переключения между SIM-картами

Теперь самое время настроить события, наступление которых влечет за собой переключение на другую SIM-карту или выполнение SIM-банков еще каких либо действий. Для этого в разделе Configurations есть два подраздела:

На наступление каждого из событий можно назначить следующие действия:

В принципе, это все основные настройки при работе SIM-банка в режиме сервера. Единственное, на что еще следует обратить внимание – это на правильную установку и удаление SIM-карт. Для того чтобы делать это безопасно, требуется предварительно отключить питание необходимого слота. Именно для этого и предназначены клавиши на корпусе SIM-банка, однако намного проще делать это с помощью Web-интерфейса. Заходим в раздел Install / Remove SIM Cards и кликаем по заголовку нужных слотов. Серый цвет означает, что питание на слот подается, красный цвет – нет. Нажимаем Submit для подтверждения действия, устанавливаем или удаляем SIM-карту, включаем питание слота и снова подтверждаем действие клавишей Submit.

Мониторинг SIM-карт

Для мониторинга установленный в SIM-банке SIM-карт предназначен раздел SIM Slot Status. Данные в этом разделе представлены в виде таблицы, где каждая ячейка соответствует одной SIM-карте и содержит следующую информацию:

Также, при наведении курсора мыши на ячейку, появится всплывающая подсказка с расширенными параметрами состояния и статистикой для данной SIM-карты.

SIM-банк в роли клиента

Работа SIM-банка в качестве клиента возможна при использовании бесплатного ПО Scheduler Server. Scheduler Server — это программный сервер, который позволяет управлять сразу несколькими шлюзами GoIP и SIM банками SMB. На момент написания статьи актуальная релизная версия ПО 1.7.2 и доступна для скачивания по ссылке.

При использовании Scheduler Server становятся доступны следующие возможности:

Забегая вперед, отмечу, что у Scheduler Server есть и свои ограничения по сравнению с использованием SIM-банка в качестве сервера. В первую очередь это касается того, что переключение между SIM-картами возможно только по времени, в по событиям – нет.

Установка Scheduler Server

Требования к системе:

Требования к сети:

После разархивирования полученного пакета, нужно запустить скрипт smbschedulerinstall.sh, который задаст несколько уточняющих вопросов и всё установит, включая БД. Далее, вся настройка производится в веб интерфейсе.

Как работает Scheduler Server

Главная роль сервера — связать SIM-карту в SIM-банке с линией GoIP шлюза. Работает это следующим образом:

Есть два способа распределения SIM карт: в фиксированном режиме и в режиме группового назначения. Фиксированный режим — это установление связи GSM-линия — SIM слот вручную, данная связь не изменится, пока пользователь сам не внесет какие либо изменения. Режим группового назначения — это динамический режим создания связей GSM-линия — SIM слот.

Режим группового назначения

В отличии от режима работы SIM-банка в качестве сервера, где каждая группа SIM-карт может быть привязана только к определенному GSM-каналу, использование Scheduler Server дает намного больше возможностей по распределению SIM-карт. Работает это следующим образом: создаются группы, к которым можно привязать как любые слоты в SIM-банке, так и любые GSM-линии любого GSM-шлюза. Соответственно, распределение SIM-карт по GSM-линиям осуществляется внутри этих групп.

Однако есть еще одна особенность – каждый GSM-шлюз (именно шлюз, не линия) привязывается к зоне. Зоны создаются самим пользователем и по задумке разработчиков должны характеризовать реальное территориальное расположение шлюза. Нужно для реализации функции эмуляции передвижения SIM-карты: Scheduler Server настроен по умолчанию таким образом, чтобы постоянно переключать SIM-карты между шлюзами из различных зон.

В каких случаях происходит переключение SIM-карты? Увы, в случае с Scheduler Server работают только временные условия. Для каждой группы могут быть заданы следующие временные правила распределения SIM-карт:

Последний вопрос, на который стоит ответить – это как происходит выбор следующей для назначения SIM-карты. Алгоритм работы тут довольно простой:

  1. В первый раз SIM карта и GSM-линия из одной группы связываются случайным образом и запускаются в работу
  2. Когда рабочее время заканчивается, SIM карта и GSM-линия разрывают связь и переходят в состояние ожидания
  3. При наступлении нового рабочего интервала, собирается новая связь с учетом следующих правил:
    1. SIM карта не будет связана с GSM-линией, с которой она была связана в последний раз
    2. SIM карта не будет связана с линией GSM-шлюза, имеющего тот же номер зоны, что был в последний раз

Подключение устройств к Scheduler Server

Для начала с помощью Web-интерфейса Scheduler Server требуется завести учетные записи для всех GSM-шлюзов и SIM-банков, которые будут к нему подключены. Учетные записи для GSM-шлюзов заводятся в разделе GoIP. Нажимаем Add и заполняем следующие поля:

Учетные записи для SIM-банков создаются, соответственно, в разделе SIM-Bank. Для добавления нового устройства, требуется заполнить следующие поля:

Переходим к Web-интерфейсам наших устройств. Начнем с GSM-шлюза GoIP. В разделе Configurations — Preferences переводим опции Remote Server и Remote SIM в состояние Enable. В опции Server указываем IP адрес Scheduler Server или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый GoIP ID, который мы использовали при заведении учетной записи в Scheduler Server, в поле Password указываем соответствующий пароль. Переключатель Net protocol переводим в состояние UDP.

Теперь зарегистрируем на Scheduler Server наш SIM-банк. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Setting и в опции Operation Mode выбираем Use External SIM Server, а в опции SIM Data Communications with выбираем SIM Server. Все остальные настройки аналогичны настройкам GSM-шлюза.

Настройка режима группового назначения

Проще всего осуществлять настройку группового назначения SIM-карт в разделе Web-интерфейса Configuration – Group. После того, как необходимое количество групп создано, к ним можно привязывать слоты SIM-банка – для этого необходимо кликнуть по ссылке SIM справа от названия группы. Для того чтобы управлять привязанными к группе GSM-каналами есть ссылка GoIP, а для управления расписанием – Scheduler.

Настройка режима фиксированного назначения

Если требуется одну или несколько SIM-карт «намертво» привязать к определенной GSM-линии определенного GSM-шлюза, то проще всего это сделать в разделе Monitor — GoIP Channel.

На этом мы заканчиваем наше краткое знакомство с основными функциями SIM-банков GoIP SMB и ПО Scheduler Server. Обладая этими базовыми знаниями, разобраться со всеми дополнительными возможностями будет уже значительно проще, чем делая это «с нуля». Для тех, кто хочет изучить вопрос еще глубже и/или получить больше функционала, я бы советовал обратить внимание на интерфейс GoAntiFraud. Это ПО сторонней компании, разработанное специально для управления и мониторинга устройствами GoIP и SMB. Распространяется оно по подписке и стоит, в общем-то, довольно прилично. Однако, имеется 7-дневный пробный период, который позволяет ознакомиться со всеми возможностями и принять решение о покупке.