Новый SIP-стек на RUST - RVOIP

25 декабря 2025, 02:36

Джонатан Айзенцопф (Jonathan Eisenzopf), разработчик из компании Talkmap (Сан-Франциско, Калифорния), предложил новый SIP-стек, написанный на языке RUST, ориентированный на высоконагруженные Контакт-центры, использующие голосовые соединения


Архитектура


┌─────────────────────────────────────────────────────────────────────────┐
│                              INTERNET                                   │
└─────────────────────────────────────────────────────────────────────────┘
                                   │
                         ┌─────────┴────────┐
                         │                  │
                   [Public IPs]         [Public IPs]
                         │                  │
       ┌─────────────────┴──────┐  ┌────────┴─────────────────┐
       │   SBC Server (Active)  │  │   SBC Server (Standby)   │
       │   Libraries:           │  │   Libraries:             │
       │   - sbc-core (NEW)     │  │   - sbc-core (NEW)       │
       └───────────┬────────────┘  └──────────────────────────┘
                   │
               [DMZ Network - 10.1.0.0/24]
                   │
       ┌───────────┴──────────────────────────────────┐
       │                                              │
  ┌────┴─────────────┐                       ┌────────┴────────┐
  │ Registrar        │                       │ Auth/User Mgmt  │
  │ Server           │                       │ Server          │
  │ Libraries:       │                       │ Libraries:      │
  │ - registrar-core │                       │ - users-core    │
  │ - sip-core       │                       │ - auth-core     │
  └────┬─────────────┘                       └─────────────────┘
       │
       │
   [Trusted Network - 10.2.0.0/24]
       │
  ┌────┴────────────────────────────────────────────┐
  │             SIP Proxy Cluster                   │
  │  ┌─────────┐  ┌─────────┐  ┌─────────┐          │
  │  │ Proxy 1 │  │ Proxy 2 │  │ Proxy 3 │          │
  │  │ proxy-  │  │ proxy-  │  │ proxy-  │          │
  │  │ core    │  │ core    │  │ core    │          │
  │  └─────────┘  └─────────┘  └─────────┘          │
  └────┬────────────────────────────────────────────┘
       │
       ├──────────────────┬──────────────────┬────────────────┐
       │                  │                  │                │
  ┌────┴─────┐      ┌─────┴─────┐      ┌─────┴─────┐   ┌──────┴──────┐
  │ B2BUA    │      │ IVR       │      │ Queue     │   │ Conference  │
  │ Server   │      │ Server    │      │ Server    │   │ Server      │
  │          │      │           │      │           │   │             │
  │ b2bua-   │      │ b2bua-    │      │ b2bua-    │   │ b2bua-      │
  │ core     │      │ core +    │      │ core +    │   │ core +      │
  │ (dialog) │      │ ivr       │      │ queue     │   │ conference  │
  │          │      │ handler   │      │ handler   │   │ handler     │
  └────┬─────┘      └─────┬─────┘      └─────┬─────┘   └──────┬──────┘
       │                  │                  │                │
       └──────────────────┴──────────────────┴────────────────┘
                                   │ API Control (REST/gRPC)
                   [Media Network - 10.3.0.0/24]
                                   │
       ┌───────────────────────────┴────────────────────────────┐
       │                 Media Server Pool                      │
       │  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
       │  │ Media 1  │  │ Media 2  │  │ Media 3  │              │
       │  │ media-   │  │ media-   │  │ media-   │              │
       │  │ server-  │  │ server-  │  │ server-  │              │
       │  │ core     │  │ core     │  │ core     │              │
       │  └──────────┘  └──────────┘  └──────────┘              │
       └────────────────────────────────────────────────────────┘

 
## Server Components

### 1. Session Border Controller (SBC)
**Purpose**: Network edge security, NAT traversal, topology hiding, DDoS protection

**Configuration**: Active/Standby HA pair

**Libraries Required**:
- `sbc-core` (NEW) - Primary SBC functionality
- `media-core` - RTP anchoring
- `sip-transport` - Network edge handling
- `infra-common` - Infrastructure

**Key Functions**:
- Topology hiding (removes internal IPs)
- NAT traversal (Far-end NAT support)
- Protocol normalization
- Rate limiting and DDoS protection
- TLS termination
- Header manipulation

### 2. Registrar Server
**Purpose**: User registration, location service

**Configuration**: Active/Active cluster with database backend

**Libraries Required**:
- `registrar-core` - Registration handling
- `sip-core` - SIP message parsing
- `infra-common` - Infrastructure
- Database integration for persistence

**Key Functions**:
- REGISTER processing
- Location binding management
- Registration expiry handling
- Multi-device registration support
- Integration with auth server

### 3. Authentication/User Management Server
**Purpose**: User authentication, authorization, account management

**Configuration**: Active/Active cluster

**Libraries Required**:
- `users-core` - User management
- `auth-core` - OAuth2/JWT authentication
- Database backend (PostgreSQL/MySQL)

**Key Functions**:
- SIP digest authentication
- OAuth2/JWT for web clients
- User provisioning
- Permission management
- Integration with external identity providers

### 4. SIP Proxy Cluster
**Purpose**: Call routing, load balancing, failover

**Configuration**: Stateless proxy cluster (3+ nodes)

**Libraries Required**:
- `proxy-core` (NEW) - Proxy functionality
- `dialog-core` - Transaction management
- `infra-common` - Infrastructure

**Key Functions**:
- Request routing based on rules
- Load balancing across B2BUA servers
- Failover handling
- Parallel/serial forking
- Route advance on failure


https://github.com/eisenzopf/rvoip