SMS-C Operations Documentation
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
- Configuration Reference - Complete configuration options and examples
Day-to-Day Operations
- Operations Guide - Daily tasks, monitoring, and maintenance
- SMS Routing Guide - Route management and configuration
- API Reference - Complete API documentation with examples
Performance & Monitoring
- Performance Tuning - Optimization for different workloads
- Metrics Guide - Prometheus metrics and monitoring
Troubleshooting
- Troubleshooting Guide - Common issues and solutions
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
Quick Links
Common Tasks
- Submitting a Message
- Creating a Route
- Checking Message Status
- Monitoring System Health
- Handling Delivery Failures
Configuration Examples
- Message Storage & Retention
- CDR Export Setup
- Privacy Controls
- High-Volume Configuration
- Geographic Routing
- Load Balancing
- ENUM/NAPTR Setup
- OCS Charging
- Number Translation
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
Related Documentation
- Performance Benchmarks - Performance testing and results
- CDR Schema Reference - Complete CDR database schema with SQL examples
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)
Recommended Production
- 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
- Check the Troubleshooting Guide
- Review application logs
- Check Prometheus metrics for anomalies
- Use the routing simulator to test routing logic
- 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
curlcommand-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
- Configuration: Configure via
config/runtime.exs- see Configuration Reference - Initial Routes: Create routing rules via Web UI or configuration file - see SMS Routing Guide
- Submit Test Message: Use API or Web UI - see API Reference
- 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.