天下苦 VOS 久矣

天下苦 VOS 久矣。 此言非怒而发,乃久用之后,积怨成理也。 VOS3x、VOS5x,曾有其功。 当年软交换荒芜,SIP 规范未成体系,工程师多凭经验行事。VOS 以一套封装良好的系统,解“能跑”之急,立一时之功,不可不认。 然功成之后,不思进化; 市占既稳,便少革新。 天下之患,莫大于此。 一、垄断既久,问题反成常态 今之 VOS,已非“可选方案”,而成“默认答案”。 选型之时,不问架构,只问“是不是 VOS”; 排障之时,不查协议,只等“厂商回复”。 于是,奇景频出: SIP 行为异于 RFC,而曰“产品设计如此” 性能瓶颈不可测,而曰“经验上差不多” 复杂需求难以实现,而曰“VOS 不支持” 简单需求可实现,而曰“得加钱” 故障定位止于日志,而曰“已提交工单” 久而久之, 问题不再被解决, 只是被习惯。 二、用 VOS,工程师何其卑微 用 VOS 者,常有此感: 系统在跑, 却不知为何如此跑; 问题已现, 却不知从何而断。 工程师所做者,不过: 点配置 调参数 猜行为 等回复 软交换本该是工程, 却活成了玄学。 三、OpenSIPS / Kamailio:让系统“讲人话” 或问: “不用 VOS,又当用谁?” 曰:OpenSIPS,Kamailio。 二者之道,不在“省钱”,而在透明: SIP 即 SIP,不自创私货 路由即代码,行为白纸黑字 性能可压测,瓶颈可定位 出问题先看脚本,而非先写邮件 在此体系之中, 系统不再“猜你想要什么”, 而是“严格执行你所写之逻辑”。 这是工程, 不是占卜。 四、开源之苦,在前;开源之利,在后 诚然,OpenSIPS / Kamailio 不好上手。 学习曲线陡峭,踩坑在所难免。 ...

2026-01-06 19:00:15 · 1 min · Eddie Wang

SIP安全 - DTLS client Hello 攻击白皮书

TL;DR 攻击者伪造DTLS ClientHello消息,在SIP服务器和客户端之间建立一个非预期的连接。导致正常链接被阻断。 影响软件 FreeSWITCH RTPengine asterisk FreePBX 漏洞白皮书 webrtc-hello-race-conditions-paper 表现 应答后呼叫无声 参考 https://github.com/EnableSecurity/advisories/tree/master/ES2023-03-rtpengine-dtls-hello-race https://github.com/EnableSecurity/advisories/tree/master/ES2023-02-freeswitch-dtls-hello-race https://github.com/EnableSecurity/advisories/tree/master/ES2023-03-rtpengine-dtls-hello-race

2025-07-14 23:13:23 · 1 min · Eddie Wang

基于 WebRTC 构建 Web SIP Phone

0 阅前须知 本文并不是教程,只是实现方案 我只是从WEB端考虑这个问题,实际还需要后端sip服务器的配合 jsSIP有个非常不错的在线demo, 可以去哪里玩耍,很好玩呢 try jssip 1. 技术简介 WebRTC: WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准 SIP: 会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。2000年11月,SIP被正式批准成为3GPP信号协议之一,并成为IMS体系结构的一个永久单元。SIP与H.323一样,是用于VoIP最主要的信令协议之一。 一般来说,要么使用实体话机,要么在系统上安装基于sip的客户端程序。实体话机硬件成本高,基于sip的客户端往往兼容性差,无法跨平台,易被杀毒软件查杀。 而WebRTC或许是更好的解决方案,只要一个浏览器就可以实时语音视频通话,这是很不错的解决方案。WebSocket可以用来传递sip信令,而WebRTC用来实时传输语音视频流。 2. 前端WebRTC实现方案 其实我们不需要去自己处理WebRTC的相关方法,或者去处理视频或者媒体流。市面上已经有不错的模块可供选择。 2.1 jsSIP jsSIP是JavaScript SIP 库 功能特点如下: 可以在浏览器或者Nodejs中运行 使用WebSocket传递SIP协议 视频音频实时消息使用WebRTC 非常轻量 100%纯JavaScript 使用简单并且具有强大的Api 服务端支持 OverSIP, Kamailio, Asterisk, OfficeSIP,reSIProcate,Frafos ABC SBC,TekSIP 是RFC 7118 and OverSIP的作者写的 下面是使用JsSIP打电话的例子,非常简单吧 // Create our JsSIP instance and run it: var socket = new JsSIP.WebSocketInterface('wss://sip.myhost.com'); var configuration = { sockets : [ socket ], uri : 'sip:alice@example.com', password : 'superpassword' }; var ua = new JsSIP.UA(configuration); ua.start(); // Register callbacks to desired call events var eventHandlers = { 'progress': function(e) { console.log('call is in progress'); }, 'failed': function(e) { console.log('call failed with cause: '+ e.data.cause); }, 'ended': function(e) { console.log('call ended with cause: '+ e.data.cause); }, 'confirmed': function(e) { console.log('call confirmed'); } }; var options = { 'eventHandlers' : eventHandlers, 'mediaConstraints' : { 'audio': true, 'video': true } }; var session = ua.call('sip:bob@example.com', options); 2.2 SIP.js sip.js项目实际是fork自jsSIP的,这里主要介绍它的服务端支持情况。其他接口自己自行查阅 ...

2018-02-11 14:44:58 · 2 min · Eddie Wang