SBC Overview
The RustPBX SBC (Session Border Controller) module provides enterprise-grade SIP border control capabilities for carrier interconnection, security protection, and traffic management.
Core Capabilities
As a SIP network border device, the SBC provides the following core capabilities:
| Capability | Description |
|---|---|
| Topology Hiding | Hides internal network topology, exposing only the SBC address externally |
| Security Protection | DoS protection, IP allow/block lists, rate limiting |
| Media Control | Media proxy mode selection, codec transcoding policy |
| Trunk Management | Trunk health checks, CAC (Call Admission Control) |
| Header Manipulation | SIP Header add/remove/modify |
| JSON-RPC Routing | Dynamically determine call routing via external HTTP API |
Architecture
External Carrier SBC Internal PBX
│ │ │
│──── SIP INVITE ────► │ │
│ │── Match Rules ──► │
│ │ ACL / JSON-RPC │
│ │── Number Rewrite ──► │
│ │ Header Manipulation │
│ │── Media Proxy ──► │
│ │ │
│◄─── SIP 200 OK ─────│◄────── 200 OK ────────│
│ │ │
│◄═════ RTP ═════════►│◄════ RTP ══════════►│
The SBC module is compiled into the RustPBX core as addon-sbc and injects SBC logic into the call processing pipeline via DialplanInspector.
Enable SBC
[proxy]
addons = ["sbc"]
Once SBC is enabled, a SBC entry appears in the console sidebar, containing four pages: Dashboard, Trunks, Routes, and Validation.
Database Requirements
The SBC reuses the core RustPBX database tables (sip_trunk, routing) and requires no additional migrations. SBC-specific metadata is stored in the sip_trunk.metadata.sbc JSON field.
SQLite / MySQL / PostgreSQL are supported.