VoIP
文章平均质量分 81
yine
在通信领域深耕16+年,精通C/C++/Java/Go/lua/py等编程语言,精通各类运营商协议如:SIP/T1/E1/PRI/H.323/SMGP/CMPP/SGIP/CNGP等,精通开源通信框架如:FreeSWITCH/Asterisk/Kamailio/OpenSIPS/WebRTC/JsSIP的配置使用及模块扩展及源码修改,掌握VoIP领域的音视频编解码,压缩算法,PLC,FEC,NACK等丢包补偿技术,ICE技术,QoS技术等,掌握主流模拟及数字中继网关配置接入,掌握主流微服务,存储引擎、搜索引擎、分布式、并行计算等框架,曾从事IM核心系统、消息推送平台、VoIP媒体交换平台...
展开
-
fs-verto安装及使用说明
背景说明在freeswitch中有mod_sofia模块支持sip协议。sip协议用于媒体链接建立前的信令交互。像mod_sofia这种模块在freeswitch中称为endpoint,除了mod_sofia,freeswitch还有一个mod_verto模块。mod_verto使用freeswitch自定义的一个协议,通过websocket进行信令交互。verto协议基于jsonRpc协议,通过json格式来传输数据。它作为一个端点存在,也就意味着可以用它来和PSTN或sip终端进行互联互通, 下面就原创 2020-05-18 15:21:33 · 1700 阅读 · 0 评论 -
FreeSWITCH mod_verto 采用 json-rpc 信令格式
FreeSWITCH mod_verto 采用 json-rpc 信令格式登录信令{ "jsonrpc": "2.0", "method": "login", "id": 1, "params": { "login": "1000@MY-IP-ADDRESS", "loginParams": {}, "userVa...原创 2020-04-30 17:57:58 · 1691 阅读 · 0 评论 -
FreeSWITCH模块类型
FreeSWITCH的内核特别稳定,而外部模块的接口也相当稳定,所以为我们开发自己的模块打下了良好的基础。在设计之初,Anthony Minessale 将外部模块分为13种类型,每种类型代表不同的应用方向,并且也设计了稳定的plugin接口。FreeSWTICH的接口类型:SWITCH_ENDPOINT_INTERFACE /* endpoint modules, 主要实现各种通信协议,如...原创 2020-04-29 15:02:06 · 511 阅读 · 0 评论 -
DEB包制作流程-Debian9+FreeSWITCH1.10.1
本文主要描述如何使用自定义git分支制作稳定deb安装包.一、准备bugfix后的git分支:1. 从FreeSWITCH主站fork到自己的git站点https://github.com/signalwire/freeswitch.git2. 自己的特性分支修复bug,然后合并到 v1.10分支3. 打出自己的release稳定tag v1.10.1-we二、编译deb包...原创 2019-11-12 16:46:46 · 616 阅读 · 0 评论 -
高性能stun服务器搭建
项目中使用WebRtc,需要使用stun服务器,网上倒是共享了许多免费可用的stun服务地址,但是稳定性无法保障,所以提前预研了一下; 使用Stuntman搭建,地址:http://www.stunprotocol.org/搭建过程该项目的github上也是有的在这简单阐述一下:首先:[javascript] view plain copy原创 2017-09-05 11:31:49 · 3687 阅读 · 4 评论 -
FreeSWITCH源码分析之mod_xml_curl
近期又开始了我的FreeSWITCH研究之路, 因为项目中需要, 使用sip_profile中的internal端点来处理sipUA的注册及在线保持做被叫, 打开了登录及呼叫认证的开关, 我们都知道FreeSWITCH默认的directory中有1000-1019这20个默认用户, 如果新增用户也有一个批处理脚本能快速的生成出来新的用户, 但是我们做为一个统一平台的操作, 有一个分布式的FS集群原创 2017-06-20 20:24:35 · 3003 阅读 · 1 评论 -
SIP路由机制解析
在前面已经陆续介绍了SIP重要头域、注册流程、会话流程等SIP相关知识,现在再来介绍一下SIP中的路由机制。总的来说,SIP中存在两种路由场景:1,请求消息的路由2,响应消息的路由其中,响应消息的路由非常简单,就是完全依靠Via来完成的,具体请见我关于RFC3261中会话流程的分析。下面我们只谈SIP请求消息的路由。首先我们要搞清楚什么是严格路由和松散路由。转载 2017-11-15 17:41:35 · 1326 阅读 · 4 评论 -
FreeSWITCH线上一次Crashes分析定位过程-ldns库问题
FS线上一次Crashes分析定位过程-ldns库问题– by yine 2018-04-10 15:33:05一、故障发生时间点2018-04-10 09:54:07二、堆栈查看结果warning: .dynamic section for "/usr/lib/x86_64-linux-gnu/librtmp.so.1" is not at the expected address (wrong...原创 2018-04-10 16:01:06 · 2623 阅读 · 3 评论 -
FreeSWITCH中DESTINATION_OUT_OF_ORDER原因分析
问题:在话单中会产生DESTINATION_OUT_OF_ORDER这种挂断原因, 但是A, B leg都有通话时长, 但是貌似时长都比较短, 不知道这个会引起什么问题, 在FS里是正常还是异常的?产生过程:先originate Aleg, park住, 再originate Bleg, 当B按听后, 再将ABLeg桥接, uuid_bridge auuid, buuid , 这样会有一定小概率的...原创 2018-04-20 15:32:56 · 10450 阅读 · 1 评论 -
SIP 定时器 总结
SIP 定时器的总结定时器缺省值节含义T1500 ms17.1.1.1经历来回时间(RTT)T24 秒17.1.2.2非 INVITE 请求和 INVITE 响应的最长重新传输时间间隔T45 秒17.1.2.2消息可保留在网络中的最长持续时间计时器 A最初为 T117.1.1.2INVITE 请求重新传输时间间隔(仅适用于 UDP)计时器 B64*T117.1.1.2INVITE 事务超时计时器...转载 2018-05-14 17:57:06 · 2954 阅读 · 2 评论 -
DTLS协议中client/server的认证过程和密钥协商过程
1.DTLS介绍1.1 DTLS的作用互联网先驱们最开始在设计互联网协议时主要考虑的是可用性,安全性是没有考虑在其中的,所以传输层的TCP、UDP协议本身都不具备安全性。SSL/TLS协议是基于TCP socket,在传输层和应用层之间构建了一个端到端的安全通道,保证了传输数据的加密性。但是SSL/TLS协议并不能用于UDP协议,而UDP也有安全传输的需求,于是产生了DTLS协议(Datagram...转载 2018-05-16 11:56:39 · 5367 阅读 · 0 评论 -
kamailio的web管理界面Siremis
很开心kamailio有个第三方的web界面管理程序 Siremis 现在已经到了2.0,界面做得不错 http://kb.asipto.com/siremis:index#siremis_screenshots主要功能如下提供系统和数据库管理工具,为Kamailio 用户,数据库别名和快速拨号管理 位置表视图 调度员,翻译前缀域和最少成本路由(LCR)管理 访问控制列表(...转载 2018-12-16 09:48:21 · 1084 阅读 · 0 评论 -
WebRTC-SDP详细解析
v=0//sdp版本号,一直为0,rfc4566规定o=- 7017624586836067756 2 IN IP4 127.0.0.1// RFC 4566 o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>//us...转载 2019-05-31 15:59:08 · 2252 阅读 · 0 评论 -
SIP交互流程及路由机制
Dialog是SIP中的一个关键概念。根据RFC3261,会话是两个UA之间持续一段时间的点到点的SIP连接,即是记录两者已经连接上的相关内容实体,方便在对话中请求进行识别和处理。 对话都是有对话ID来标识的,包括Call-ID,一个本地标签(From-tag)和一个远端标签(To-tag)。即是说三者确定了某个对话的存在。 对话中还包括一些对话中的后续消息所需的状态,原创 2017-08-23 15:23:10 · 8002 阅读 · 2 评论 -
freeswitch源码阅读 之 sofia模块
sofia模块在freeswitch中的位置非常重要, 所有的sip通话都和它有关, 那么原创 2014-07-25 12:01:12 · 5945 阅读 · 0 评论 -
软交换FreeSWITCH系统概要和源代码分析预备知识
asterisk与freeswitch的比较:1:Asterisk是针对1百人以下的小型系统,相同的硬件配置下单系统最多并发200路,而根据国外爱好者测试freeswitch可达到2000-3000路sip通道(媒体流并发)。2:Asterisk用动态链表来管理每个打开的通道,这样在多线程中非常难于管理(需要频繁的锁定和解锁)。而freeswitch每个呼叫通道都会用一个线程来管理呼叫状态原创 2015-07-28 16:35:16 · 1377 阅读 · 0 评论 -
Chef 环境的安装及使用
官方地址 (http://docs.getchef.com/install_server.html)Chef 环境的安装步骤一般是:先安装 Chef Server,然后配置 Chef Workstation, 最后根据需要在客户端机器上安装 Chef Client 并将其注册成 Chef Node。Chef Server 和 Chef Workstation 可以配在一台机器上,也可以分开原创 2014-08-20 16:02:41 · 3279 阅读 · 0 评论 -
FreeSWITCH初识
读到本章,你应该对 FreeSWITCH 有了一个比较全面的了解,迫切地想实验它强大的功能了。让我们从最初的运行开始,一步一步进入 FreeSWITCH 的神秘世界。命令行参数一般来说,FreeSWITCH 不需要任何命令行参数就可以启动,但在某些情况下,你需要以一些特殊的参数启动。在此,仅作简单介绍。如果你知道是什么意思,那么你就可以使用,如果不知道,多半你用不到。使用转载 2015-07-28 12:15:56 · 6512 阅读 · 0 评论 -
FreeSwitch下配置DID的方法
首先介绍下什么是DID? 翻译为中文为“直接向内拨号”,该服务是由电话公司提供的,它使用户能够直接拨打PBX或VOIP系统中的分机号码,而无需求助于总机或自动话务系统。现在要实现这样一个功能 - 通过手机或座机拨打一个号码(例如:01088888888),可以直接联系到VOIP系统(FreeSwitch系统)的1008这个用户。如下图所示:手机/座机 ---------------转载 2015-07-28 16:28:09 · 3453 阅读 · 1 评论 -
rtpengine源码结构分析及交互流程
一、交互结构图二、总体结构:1. 大部分数据结构都直接使用的glib的库提供的;2. 将网络层做了一个封装和业务部分用回调方法来解偶;3. 和第三方服务用网络TCP/UDP连接方式用简单自定义文本协议来交互;4. 可以将相关的状态同步给redis外部缓存, 供其它外界的分析调用;5. 采用内核相关模块来进行媒体的交换, 提高应用性能。三、流程分析原创 2015-07-28 10:17:37 · 4581 阅读 · 2 评论 -
freeswitch的优势
Asterisk 与freeswitch都是流行的开源软交换服务器,Asterisk出现的比较早,大概在1999年开始此项目,应该是最流行的开源软交换服务器,整个社区上下游都已经很成熟。freeswitch 算是后起之秀,2005年才开始,但性能和稳定性都明显优于Asterisk,但由于出现的 晚,导致其功能的多样性及与其他系统的集成难度高于asterisk.下面为As转载 2015-07-28 12:14:14 · 2536 阅读 · 0 评论 -
FreeSWITCH呼叫保持思路
场景介绍该篇文章主要用于介绍如何使用FreeSWITCH实现通讯系统中常见的多人来电功能。 具体场景如下: A与B正在通话中,此时C拨打A/B,FreeSWITCH发送消息给A/B提示有新电话进来,A/B收到提示后,可以选择不予理睬或者保持当前通话接通C。在与C通话完毕后,在还没挂断的情况下,可以继续返回与B/A继续通话。设置拨号方案在文件/usr/local/fr转载 2015-07-28 12:29:13 · 3996 阅读 · 2 评论 -
ASTERISK–E1–DAHDI–PRI的配置和调试
E1语音板卡+ pri的电信线路。1)先在asterisk中把e1驱动配置好,配置好后一般要去掉dahdi的CRC校验,在 /etc/dahdi/system.conf 这个配置文件中去掉CRC4的校验,有几个E1模块,就去掉几个CRC4的参数。如下:把 #span=1,1,0,ccs,hdb3,crc4 改为 #span=1,1,0,ccs,hdb3 ,然后停掉asteris转载 2016-06-14 11:29:50 · 5496 阅读 · 1 评论 -
webrtc中的网络反馈与控制
webrtc中的网络反馈与控制引言站在风口上,猪都能飞起来。雷布斯的这句名言,已经被大家传的家喻户晓了,说起当下站在风口上的猪,除了丁老板的未央猪,这头实实在在的猪,视频直播应该可以算一个。今年各种直播平台,各个轮次的融资消息应接不暇。对于互联网技术从业者来说,RTC(Real Time Communication,实时通信)这个站着视频直播背后的技术也重新开始变得火热起来。视频直转载 2016-12-29 15:50:47 · 1160 阅读 · 0 评论 -
SIP: From ,Contact, Via 和 Record-Route/Route head字段详解
本文对SIP 消息中from, contact, via, record-route 和route 字段进行详细的解释,便于大家对SIP信令进行分析和排错From: 如果一个SIP消息中没有Contact或者Record-Route头域,那么callee就会根据From头域产生后续的Request。比如:如果 Alice打一个电话给Bob,From头域的内容是 From:Alice转载 2017-04-25 11:42:41 · 6286 阅读 · 0 评论 -
zookeeper原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee转载 2017-04-26 11:18:36 · 513 阅读 · 0 评论 -
SoX-linux里操作音频的瑞士军刀
Sox是最为著名的Open Source声音文件格式转换工具。已经被广泛移植到Dos、windows、OS2、Sun、Next、Unix、Linux等多个操作系统平台。Sox项目是由Lance Norskog创立的,后来被众多的开发者逐步完善,现在已经能够支持很多种声音文件格式和声音处理效果。基本上常见的声音格式都能够支持。更加有用的是,Sox能够进行声音滤波、采样频率转换,这对那转载 2017-06-14 16:16:11 · 13298 阅读 · 1 评论 -
FreeSWITCH源码分析之主函数main()
Freeswitch的主函数是在文件switch.c中定义的,该文件的260行是整个程序的入口,主函数主要完成的功能是包括,命令行解析,初始化apr库,构建全局内存池,模块加载和初始化核心组件。 初始化apr库是由apr_initialize()函数完成的,apr库是apache的可移植动态库,完成相关的内存池,线程管理的跨平台工作。该函数的调用在主函数的659行。745行的原创 2017-08-21 16:19:54 · 2179 阅读 · 2 评论 -
FreeSWITCH落地的配置总结
[+]简介首先先说明一下落地的含义。用我简单粗糙的理解,就是通过SIP接入运营商呼到手机或者固话。在FreeSWITCH中使用SIP和运营商对接达到落地的效果。对接方式简单介绍一下,FreeSWITCH里Gateway(网关)的概念。网关又成协议转换器,通常都是进行协议转换。这里说的网关指的是语音网关,如常用的SIP网关,负责SIP协议和七号信令或ISDN原创 2017-05-18 10:06:27 · 1450 阅读 · 0 评论 -
FreeSWITCH代码分析
什么是FreeSWITCHFreeSWITCH 是一个可扩展的开源跨平台的电话平台,支持音频、视频、文本或任何其他形式的媒体使用的协议的路由与交互。它于2006年成立。FreeSWITCH也提供一个稳定的技术平台,可供许多电话应用开发利用的免费工具。FreeSWITCH 最初由Anthony Minessale在Brian West和Michael Jerris的协助下设计和开发。原创 2015-07-28 16:41:13 · 2250 阅读 · 0 评论 -
freeswitch离线对帐话单的产生及保存方式及配置说明
--> --> --> INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_s原创 2014-07-28 10:17:10 · 5165 阅读 · 0 评论