Skip to main content

SMS-C Operations Documentation

← Back to Main README

Welcome to the SMS-C operations documentation. This comprehensive guide covers all aspects of configuring, operating, monitoring, and troubleshooting the SMS-C system.

Documentation Overview

Getting Started

Day-to-Day Operations

Performance & Monitoring

Troubleshooting

Compliance & Regulatory

  • ANSSI R226 Interception Compliance - French lawful interception technical specifications
    • Multi-protocol frontend integration (IMS/SIP, SMPP, SS7/MAP)
    • ETSI X1/X2/X3 lawful interception interfaces
    • Mnesia + SQL two-tier storage architecture
    • CDR schema for lawful interception queries
    • Encryption and cryptanalysis capabilities

Common Tasks

Configuration Examples

Monitoring & Alerts

System Architecture Overview

The SMS-C is a distributed, high-performance message routing platform with the following key components:

Core Components

  • Message Storage - Mnesia-based fast storage with configurable retention and CDR export
  • Routing Engine - Mnesia-based routing rules with prefix matching and load balancing
  • Number Translation - Regex-based number normalization with priority ordering
  • Charging Integration - OCS online charging with route-based policies
  • ENUM Lookup - DNS-based number routing with caching
  • Event Logging - Message lifecycle tracking
  • CDR Export - Automatic export to SQL database for long-term billing/analytics

External Interfaces

  • REST API - Message submission and management (HTTPS)
  • Web UI - Route management, message browser, monitoring
  • Prometheus - Metrics exposure for monitoring
  • OCS - Charging/billing integration
  • DNS - ENUM/NAPTR lookups for routing

Distribution & HA

  • Multi-Node Clustering - Distributed message processing
  • Mnesia Replication - Route synchronization across nodes
  • Automatic Failover - Node failure handling
  • Load Balancing - Weighted route distribution

System Requirements

Minimum Requirements

  • CPU: 2 cores
  • RAM: 4 GB
  • Disk: 50 GB (grows with message retention)
  • OS: Linux (recommended), macOS (development)
  • Erlang/OTP: 26.x or later
  • Elixir: 1.15.x or later
  • SQL Database: MySQL 8.0+, MariaDB 10.5+, or PostgreSQL 13+ (for CDR storage)
  • CPU: 8+ cores
  • RAM: 16+ GB
  • Disk: 500+ GB SSD
  • Network: 1 Gbps+
  • SQL Database: Dedicated server with replication (for CDR storage)

Network Ports

  • 80/443 - Web UI (HTTP/HTTPS)
  • 8443 - API (HTTPS)
  • 4369 - Erlang Port Mapper (clustering)
  • 9100-9200 - Erlang distribution (clustering)
  • 9568 - Prometheus metrics

Support & Resources

Logs

  • Application Logs: /var/log/sms_c/ (production) or console (development)
  • Web UI Logs: Real-time log viewer at /logs
  • Event Logs: Per-message event tracking via API

Diagnostics

  • Health Check: GET /api/status
  • Metrics: GET http://localhost:9568/metrics (Prometheus format)
  • Frontend Status: Web UI at /frontend_status
  • Message Queue: Web UI at /message_queue

Getting Help

  1. Check the Troubleshooting Guide
  2. Review application logs
  3. Check Prometheus metrics for anomalies
  4. Use the routing simulator to test routing logic
  5. Examine per-message event logs

Version Information

This documentation is current as of:

  • Last Updated: 2025-10-30
  • SMS-C Version: Latest development build
  • Supported Elixir: 1.15.x - 1.17.x
  • Supported Erlang/OTP: 26.x - 27.x

Documentation Conventions

Throughout this documentation:

  • Configuration examples show typical values; adjust for your environment
  • API examples use curl command-line format
  • IP addresses and domains are examples only; replace with your actual values
  • Metric names follow Prometheus naming conventions
  • All timestamps are in UTC unless otherwise specified

Quick Start

  1. Configuration: Configure via config/runtime.exs - see Configuration Reference
  2. Initial Routes: Create routing rules via Web UI or configuration file - see SMS Routing Guide
  3. Submit Test Message: Use API or Web UI - see API Reference
  4. Monitor: Set up Prometheus scraping - see Metrics Guide

Documentation Feedback

This documentation is maintained alongside the SMS-C codebase. For corrections or improvements, please update the markdown files in the docs/ directory.