IOSOR База знаний

Сбой enquire_link в SMPP не является доставленным трафиком

Узнайте, как обработка сбоев enquire_link и зависших SMPP-сессий в IOSOR предотвращает ложные DLR и защищает баланс от ошибочных списаний.

Таймаут enquire_link означает разрыв SMPP-сессии, при котором все сообщения в очереди считаются недоставленными. Ошибочное принятие сбоя сокета за успешную отправку ведет к генерации ложных DLR и неверным списаниям USD. IOSOR автоматически закрывает неактивные bind и аннулирует финансовые холды, предотвращая некорректные транзакции.

Роль таймаутов enquire_link в обнаружении обрыва SMPP-сессии

В протоколе SMPP запросы enquire_link служат основным L7-heartbeat между клиентом и SMSC. При зависании TCP-сокета без отправки явного пакета UNBIND или FIN происходит невидимый обрыв сессии. Без проверки работоспособности очереди продолжают отправку PDU submit_sm в неактивный канал. В IOSOR жесткие таймауты ожиданий enquire_link_resp фиксируют неактивность bind до того, как списания успеют зафиксироваться в финансовом реестре.

Блокировка ложных DLR при молчаливом падении сокета

Распространенная проблема устаревших CPaaS-платформ — оптимистичная генерация статусов доставки. Если сессия падает после получения submit_sm_resp, но до подтверждения конечности доставки, система не должна считать трафик доставленным. Списание средств с клиентов при молчаливом обрыве сокета ведет к финансовым расхождениям. IOSOR блокирует окончательное списание при таймауте enquire_link, переводя неподтвержденные сообщения в статус ошибки или отправляя их на резервный маршрут.

Освобождение резерва средств в биллинге при потере связи

При поступлении PDU submit_sm платформа IOSOR создает временный резерв средств на балансе. Если SMPP-bind разрывается из-за отсутствия ответов enquire_link_resp, платформа отклоняет зависшие отправки. Зарезервированная сумма немедленно возвращается на баланс, а не списывается окончательно. Это полностью исключает фантомные списания и синхронизирует финансовый баланс с реальным состоянием сети.

Автоматическое изолирование сессии и переключение маршрутов

Фиксация неактивного bind должна запускать мгновенный перенос трафика. Если количество пропущенных ответов enquire_link превышает лимит, IOSOR изолирует проблемную сессию, генерирует событие обрыва и перенаправляет трафик OTP и транзакционных SMS на резервные каналы. Это обеспечивает минимальную задержку доставки и предотвращает потерю сообщений.

Согласованность статусов в логах, webhook и финансовом учете

Для корректной работы системы необходим единый язык статусов для протокола, биллинга и API. При потере соединения IOSOR фиксирует последовательность PDU, отправляет webhook клиенту и приведит реестр к актуальному состоянию. Изучите дополнительные материалы по теме:

Начните с IOSOR

Настройте тайм-аут enquire_link и порог неотвеченных heartbeats в консоли управления IOSOR для всех активных SMPP-сессий. Перейдите в параметры биллинга и убедитесь, что при обрыве соединения незавершенные holds заблокированных SMS автоматически отменяются, а не списываются как успешные DLR. Проверьте вебхуки оповещений, чтобы шлюз мгновенно переключал трафик на резервные маршруты при падении байнда.

Итог IOSOR

Этот разбор доказал, что зависший SMPP-байнд без входящих ответов enquire_link_resp не должен приводить к ложноположительным DLR и списанию средств клиентов. Зависание сокета на уровне L7 требует немедленной изоляции сессии и автоматического возврата зарезервированного баланса.

Настраивайте жесткий мониторинг тайм-аутов heartbeats и автоматический разрыв сессий при превышении порога ответов. Не допускайте ситуаций, когда система генерирует статусы успешной доставки или списывает деньги за сообщения, зависшие в упавшем SMPP-канале.

Был ли материал полезен?

Связанные гайды

  • Оконные лимиты SMPP и ограничения сессий

    Узнайте, как рассчитывать высоконагруженные SMPP-подключения, настраивать размер окна, ограничивать сессии и управлять балансом в IOSOR.

  • Сравнение SMPP Binds и ключей REST API

    Разбор различий между сессиями SMPP и ключами REST API в IOSOR. Механика скользящих окон, ротация учетных данных и настройка параметров для разработчиков.