最简单的架构 - 1架构

1架构: 1台FS节点

在一个最简单的VoIP架构里,你只需要部署一台具有公网IP的FreeSWITCH, 就可以开始呼叫业务。

分机直接注册到FS上,然后FS直接对接线路。

但是要不了多久,你就会发现下面的问题:

  • 安全问题

    • FS直接公网暴露,必然面临被攻击的事实。因为对接线路虽然可以设置网络策略,但是分机的IP往往是动态变化的。小型的攻击例如恶意的注册扫描,大型的攻击就是DDOS, 直接打满带宽,导致业务必然中断。
    • 一些简单的安全防范,比如默认端口改成非5060的端口,但是使用现代化的端口扫描工具,6W个端口基本上几秒就能扫描完。
  • 高可用问题:

    • 单台FS挂掉,业务就中断了
    • 停机维护, 业务也会中断
  • 扩展问题:

    • 当业务上量,一台FS就无法满足,必然要增加新的FS节点。
    • 这时候问题就来了
      • 分机信息保存在FS节点中,多FS节点分机注册信息如何同步?
      • 在呼入的时候,是否要通知SIP-线路去增加新的FS节点信息? 网络策略是不是又要开一遍?

支持FS动态扩展架构 2+N架构

2+N架构: 2台SIP Proxy,N台FS节点

这种架构特点

  1. SIP Proxy层具有公网IP,无论分机注册,还是对接线路,SIP信令都需要经过SIP Proxy层
  2. 分机注册信息也保存在SIP Proxy层,FS不再关心分机的注册地址
  3. SIP Proxy层可以用keep-alive保活,一主一备部署
  4. FS可以无感扩容,由Proxy层来做负载均衡。

在这个架构图里,我没有引入rtpproxy或者rtpengine的,这时候媒体流的走向就比较尴尬。

每台FS还必须要要有公网地址, 只有这样分机才能直接对接FS。 而原因也很简单,因为opensips或者kamailio没有媒体处理能力。

这种架构还是无法节约EIP, FS还是可能遭受到公网攻击。

2+N+N架构

2+N+N架构: 2台SIP Proxy,N台MediaPrxyo节点, N台FS节点

为了彻底让FS不再供网暴露,我们引入媒体代理层。

这次基于架构2, 引入媒体代理集群,例如使用多台rtpengine机群,用来转发UAC <> FS <> 线路 之间的媒体流

三明治架构

可以参考 SIPSwse C5架构 https://wdd.js.org/posts/2025/sipwise-c5-arch/

这种架构在媒体层和SIP Proxy层之间又增加一层,我称之为SIP Router层。

为什么要做两层SIP Proxy呢?

因为这样做可以让每一层的功能更集中。

  • SIP Proxy层,定位改为SIP接入层
    • 统一协议接入:无论客户端是什么协议,例如tls/tcp/udp/wss, 在这一层可以统一来接入, 对内统一都用udp传输SIP信令
    • 安全认证: 在这一层要作为整个系统的出入口,对进入的流量做统一的访问控制和安全认证
    • NAT穿透处理
    • 拓扑隐藏
    • SIP防洪/IP拦截
  • SIP Router层,定位改为业务强相关
    • 负责注册管理
    • 中继选择
    • 号码改写
    • 话单计费

也许有人会说,sip-router层和sip-proxy完全是可以合并的,没必要做成两层。

那我问你一个问题:你没有见过谁家的房子,是打开大门就能进入卧室的?

sip-proxy层就是防盗大门, 而router层就是客厅,media层就是卧室。

另外,在一些受限网络中,sip-proxy也可以作为该网络的接入点来使用。