图解VoIP#1: 你什么时候需要OpenSIPS或kamailio - 软交换架构演进之路
最简单的架构 - 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节点 这种架构特点 SIP Proxy层具有公网IP,无论分机注册,还是对接线路,SIP信令都需要经过SIP Proxy层 分机注册信息也保存在SIP Proxy层,FS不再关心分机的注册地址 SIP Proxy层可以用keep-alive保活,一主一备部署 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层。 ...