![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术-VOIP
文章平均质量分 83
求真得真
空空如常,求真得真
展开
-
fs.1.10 ON rockeylinux8 dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。编译出的docker镜像还是比较大,需要持续瘦身。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。原创 2024-06-14 17:58:41 · 963 阅读 · 0 评论 -
fs.1.10 ON rockylinux8 docker镜像制作
freeswitch是一款简单好用的VOIP开源软交换平台。rockylinux docker上编译安装fs1.10版本的流程记录。fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。后续继续整理fs.1.10镜像的dockerfile模式。空空如常求真得真。原创 2024-06-07 18:04:56 · 706 阅读 · 0 评论 -
freeswitch官方仓库
在使用源代码编译安装freeswitch的过程中,我们经常需要一些依赖库,其中freeswitch官方的yum源仓库是最齐全最方便的。但是,freeswitch仓库的配置和使用需要先在signalwire网站注册账号并获取PAT(personal access token)。fs官方仓库的依赖更全更方便。signalwire的账号注册有点麻烦,需要梯子,最新的登录还需要手机验证码,国内的验证码很难收到。空空如常求真得真。原创 2024-05-30 17:42:55 · 870 阅读 · 0 评论 -
记录freeswitch的一个2833问题
freeswitch是一款简单好用的VOIP开源软交换平台。运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。临时方案覆盖面不足,无法保证所有线路都能通过该方式修正该问题。正式方案应该修改fs的200OK携带payload,可以动态的跟随update保持一致。空空如常求真得真。原创 2024-05-17 17:25:42 · 390 阅读 · 0 评论 -
记录一次fs通话无声的问题
freeswitch是一款简单好用的VOIP开源软交换平台。fs的实际应用中,由于网络、配置等问题,经常会产生通话无声的问题。实际生产环境中,网络和各种配置的异常情况特别多,需要根据实际情况一步步分析解决。fs不能仅仅关注服务本身的问题,服务器,网络的问题也都需要了解一点。在没有静态路由的场景下,网卡到fs服务的媒体流转发也会失败。空空如常求真得真。原创 2024-04-30 17:31:27 · 334 阅读 · 0 评论 -
centos6.5重启docker容器死机问题
近期在整理服务问题,使用docker容器重新部署服务。过程中有不少坑,主要是系统配置和系统版本的问题。抛弃centos6的时候到了。空空如常求真得真。原创 2024-04-19 17:32:56 · 930 阅读 · 1 评论 -
fs.1.10 ON CENTOS7 dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。编译出的docker镜像还是比较大,需要持续瘦身。centos系统后续的维护问题需要关注。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。原创 2024-04-11 18:10:07 · 849 阅读 · 0 评论 -
fs.1.10 ON CENTOS7 docker镜像制作
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs1.10版本的流程记录。fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。后续继续整理fs.1.10镜像的dockerfile模式。空空如常求真得真。原创 2024-03-27 11:41:55 · 617 阅读 · 0 评论 -
使用docker-compose管理freeswitch容器
之前的文章我们介绍过如何将freeswitch做成docker镜像,也使用命令行模式正常启动了fs的docker容器。但是当我们需要同时管理多个docker容器的时候,还是使用docker-compose更简单。docker-compose简化了多个docker容器的管理难度。对于docker集群的部署,使用docker-compose很方便。空空如常求真得真。原创 2024-03-16 11:10:31 · 1118 阅读 · 0 评论 -
centos docker服务问题
docker的应用版本正式上线,结果一上线就出各种幺蛾子。本文档主要介绍centos系统安装docker和启动的问题解决方法。docker registry的私服镜像使用方便。docker-compose管理镜像启动配置。空空如常求真得真。原创 2024-02-28 17:43:53 · 1118 阅读 · 0 评论 -
获取当天剩余时间
业务测试的过程中,本来有一个时间函数“获取当天剩余时间”,其中使用了localtime()和mktime(),但是在压力测试的过程中发现,两个time函数都不是线程安全的,多线程并发的时候会产生一些随机的错误,结果就是获得的interval时间错误,进而影响到业务流程。fs是多线程架构,对于大并发场景下的压力测试要特别注意线程安全的问题。为了尽可能的提高性能,也有很多技术手段可以不使用加锁的方式解决。空空如常求真得真。原创 2024-02-23 17:45:31 · 231 阅读 · 0 评论 -
freeswitch的主被叫号码
freeswitch是一款简单好用的VOIP开源软交换平台。sip信令中对于主被叫号码有多个头域显示,不同的配置参数又有多种头域组合,当我们在使用fs处理信令时,应该如何设置和获取主被叫号码在恰当的头域中。fs收到invite信令时,通过“caller_id_number”获取主叫号码的头域优先级,Remote-Party-ID,P-Asserted-Identity,From。fs收到invite信令时,通过“destination_number”获取的被叫号码是requestline中的号码。原创 2024-02-02 17:34:08 · 554 阅读 · 0 评论 -
freeswitch on centos dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式。centos系统后续的维护问题需要关注。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。原创 2024-01-19 18:20:15 · 997 阅读 · 0 评论 -
freeswitch on centos docker
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。原创 2024-01-10 17:35:08 · 1035 阅读 · 0 评论 -
CENTOS docker拉取私服镜像
docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。本文档主要介绍centos系统安装docker和拉取docker私服镜像的步骤和问题解决。尽快切换掉centos6系统。docker registry的私服镜像使用更方便。docker镜像包的瘦身工作要持续进行。空空如常求真得真。原创 2023-12-29 17:39:38 · 1298 阅读 · 1 评论 -
freeswitch on debian docker
freeswitch是一款简单好用的VOIP开源软交换平台。因为centos系统期限的原因,尝试在debian的docker上使用fs。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。原创 2023-12-22 17:51:23 · 1290 阅读 · 0 评论 -
freeswitch如何解决sip信令的NAT问题
freeswitch是一款简单好用的VOIP开源软交换平台。公网环境复杂多变,客户环境更是各种稀奇古怪的问题。fs在针对sip信令的NAT问题有针对性的参数设置。本文讨论的范围限于fs的公网地址正常没有在NAT后面的两种常见场景。其他更多更复杂的NAT场景暂不讨论。本文仅仅讨论了两种比较简单常见的NAT问题,公网环境中的NAT问题更加的复杂多变。对于NAT问题的通用思路是想办法找到对方或自己的公网地址,在消息传递过程中使用各种手段透传过NAT网关。空空如常求真得真。原创 2023-12-08 17:44:43 · 325 阅读 · 0 评论 -
freeswitch设置多个execute_on_media
freeswitch是一款简单好用的VOIP开源软交换平台。fs中有非常多的接口和通道变量,使用方式多变。官方文档有时候也仅仅是介绍了最基本的使用方法和格式。execute_on大部分源码在switch_channel.c中。思考为什么测试结果中,先执行log1,再执行log0。空空如常求真得真。原创 2023-11-23 17:34:36 · 418 阅读 · 1 评论 -
freeswitch的一个性能问题
freeswitch是一款简单好用的VOIP开源软交换平台。在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的。最近在测试某些场景的时候,压测会造成fs的内存占用持续升高,并在达到某个临界点的时候击溃fs的端口服务,导致全部sip呼叫响应503。fs启动打开的端口超过一定数目(1000)之后,会有内存占用过大和内存持续升高的问题。在删除多余的端口资源后,测试恢复正常。具体原因需要对sofia模块代码走读确定。空空如常求真得真。原创 2023-11-17 17:30:24 · 246 阅读 · 0 评论 -
sipp3.6多方案压测脚本
SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发。通过python脚本的子进程功能,我们可以很方便的实现sipp的多方案压测功能。sipp的github地址:https://github.com/SIPp/sipp后续会有更多的压测方案和脚本慢慢写。空空如常求真得真。原创 2023-10-26 17:54:48 · 321 阅读 · 0 评论 -
DOCKER本地仓库
随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。试用了docker的本地仓库功能,简单易上手,记录下来以备后用。首先删除本地自定义镜像,然后从registry重新下载。Docker镜像的本地库是CI自动化流程的必要步骤。Docker的registry镜像简单易上手。空空如常求真得真。原创 2023-10-12 17:09:50 · 702 阅读 · 0 评论 -
HOMER7配置告警
HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。在HOMER7的框架中,内置有prometheus、grafana、alertmanager等模块,并在grafana中有默认的sip overview指标监控界面。本文介绍如何通过grafana对sip监控指标设置告警的操作。原创 2023-09-28 16:36:03 · 215 阅读 · 0 评论 -
paddlespeech asr脚本demo
paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。本文介绍利用ps中的asr功能实现批量处理音频文件的demo。ps的asr功能中有多个模型可选,目前测试中的“conformer_wenetspeech”识别准确率较高。识别速度有待提高,音频长度的限制也待解决。空空如常求真得真。原创 2023-09-14 17:50:03 · 663 阅读 · 0 评论 -
freeswitch sofia协议栈调试
freeswitch是一款简单好用的VOIP开源软交换平台。fs内部使用sofia的sip协议栈,本文介绍如何调试跟踪sofia协议栈。freeswitch使用sofia sip协议栈,有需要关注sip协议栈的同学可以通过debug模式调试sip处理流程。空空如常求真得真。原创 2023-09-08 17:49:58 · 268 阅读 · 0 评论 -
paddlespeech on centos7
paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。paddlespeech整体是比较简单易用的,但是安装部署依然有很多坑,本文为探坑而写。paddlespeech提供了语音相关的基础能力,降低了音频模型的使用门槛。在paddlespeech的基础上,完善的产品还需要很多的包装工作和业务开发。空空如常求真得真。原创 2023-09-08 15:09:58 · 977 阅读 · 0 评论 -
PRACK消息
PRACK消息是sip协议的扩展,在RFC3262中定义,标准的名称是sip协议中的可靠临时响应。本文简单介绍标准中对PRACK消息流程的描述,以及fs配置PRACK的方式。freeswitch对PRACK的处理和RFC标准基本一致。如果呼叫场景中早期媒体比较重要,而且因为网络问题经常丢失,就需要开启100rel来保证早期媒体的可靠消息。空空如常求真得真。原创 2023-08-25 17:22:55 · 341 阅读 · 0 评论 -
freeswitch的mod_xml_curl模块动态获取configuration
freeswitch是一款简单好用的VOIP开源软交换平台。mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取acl配置。mod_xml_curl模块动态获取config数据,方便对批量的fs集中统一管理配置。未解决问题。configuration类型的配置数据动态刷新的边界在哪里,我们可以把哪些配置数据放在web服务统一管理。如何解决web服务不可用的本地xml配置问题,本地xml配置与web动态配置不一致的问题。空空如常求真得真。原创 2023-08-11 17:56:52 · 1205 阅读 · 0 评论 -
freeswitch的mod_xml_curl模块动态获取dialplan
freeswitch是一款简单好用的VOIP开源软交换平台。mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。mod_xml_curl模块动态获取dialplan数据,控制呼叫流程。未解决问题。如何更灵活的控制从web服务和本地xml文件获取配置。如何缓存web服务的xml配置。如何解决web服务不可用的时候,呼叫流程问题。空空如常求真得真。原创 2023-08-04 17:14:19 · 1254 阅读 · 0 评论 -
freeswitch的mod_xml_curl模块
freeswitch是一款简单好用的VOIP开源软交换平台。随着fs服务的增多,每一台fs都需要在后台单独配置,耗时耗力,心力憔悴。如果有一个集中管理配置的配置中心,统一管理所有fs的配置,并可以实现动态的修改配置就好了。于是就发现了mod_xml_curl模块。mod_xml_curl模块默认不编译安装。进入“freeswitch/src/mod/xml_int/mod_xml_curl”目录,执行如下命令检查模块安装情况。ll。原创 2023-07-28 17:29:21 · 1231 阅读 · 3 评论 -
freeswitch的mod_xml_cdr模块
freeswitch是一款简单好用的VOIP开源软交换平台。在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯。fs中的mod_xml_cdr模块提供了基本话单功能之外的选择,可以输出XML格式的本地话单或通过http post接口上传web服务器。mod_xml_cdr模块默认编译安装,但没有加载。检查conf/autoload_configs/modules.conf.xml文件。原创 2023-07-20 17:55:44 · 441 阅读 · 0 评论 -
freeswitch的mod_cdr_csv模块
freeswitch是一款简单好用的VOIP开源软交换平台。在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯。fs中基本的话单模块mod_cdr_csv,可以满足大部分话单要求。mod_cdr_csv模块默认编译安装,并有加载。检查conf/autoload_configs/modules.conf.xml文件。cdr_csv模块会在通话结束后写入话单记录到文本文件,话单的格式根据配置的模板确定。原创 2023-07-13 17:50:36 · 406 阅读 · 0 评论 -
介绍几种OPTIONS检测的方法
日常的VOIP开发中,OPTIONS检测是常用的网络状态检测工具。OPTIONS原本是作为获取对方能力的消息,也可以检测当前服务状态。正常情况下,UAS收到OPTIONS心跳,直接回复200即可。与ping不同的是,OPTIONS检测不仅仅针对网络状态,也针对sip server的端口状态进行检测,在VOIP问题定位中更精准。OPTIONS心跳检测在voip的应用过程中还是挺重要的,对于线路和sip应用的正常检测必不可少,配合zabbix等监控平台可以及时有效的发现问题。原创 2023-07-05 18:03:48 · 827 阅读 · 0 评论 -
fusionpbx简介
fusionpbx是以freeswitch作为底层框架开发而成的开源PBX,在freeswitch的基础上,优化了GUI的易用性。fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务器、语音应用服务器、设备框架等。fusionpbx提供无限分机、语音邮件到电子邮件、音乐保持、呼叫停放、呼叫中心、呼叫队列、电话配置和许多其他功能。它提供您的业务所需的功能,并为中小型企业带来企业级电话系统功能。原创 2023-06-30 17:20:00 · 578 阅读 · 1 评论 -
freeswitch透传带SDP的180
freeswitch是一款简单好用的VOIP开源软交换平台。freeswitch对于180/183的消息处理有默认的规则,但是在3GPP的标准中,消息流程会更加复杂,场景更多变。这样就需要我们根据实际环境中的场景定制消息流程。本文只讨论带SDP的183/180消息。常见的消息处理流程都可以在mod_sofia中找到,但是对于AB路之间的消息透传,以及涉及到codec媒体协商的流程会比较复杂。空空如常求真得真。原创 2023-06-08 17:36:09 · 1177 阅读 · 0 评论 -
freeswitch的gateway配置方案优化
freeswitch是一款简单好用的VOIP开源软交换平台。在之前的文章中,我们简单介绍过gateway的三种配置方案,但是实际应用之后发现,方案中的参数设置有缺陷,会导致一些问题。本文档中,针对具体的gateway配置问题进行分析和解决。freeswitch的gateway概念有多种类型和参数,需要在实际应用场景下测试验证。gateway的参数详情请参考fs官网文档。空空如常求真得真。原创 2023-06-02 15:35:31 · 872 阅读 · 0 评论 -
HOMER docker版本配置优化
HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。之前的文章中,我们介绍过HOMER的安装流程。今天对使用过程中碰到的数据保存周期的问题,讨论配置优化的方案。HOMER的配置较多且复杂,如果只是作为辅助监控工具使用,默认配置基本够用。空空如常求真得真。原创 2023-05-24 18:15:41 · 842 阅读 · 0 评论 -
freeswitch的2833和inband对接方案
freeswitch支持三种模式的DTMF传输方式,分别时inband、INFO、2833。在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中,需要将DTMF码做格式转换,通常是2833和inband之间的转换。freeswitch作为VOIP和PSTN网络中间的媒体服务器时,AB路会协商为不同的DTMF按键格式,我们需要一种可以将2833和inband格式互转的方案。使用拨号计划的app组合,实现了fs支持AB路不同的DTMF格式的转换。原创 2023-05-18 16:59:30 · 1170 阅读 · 0 评论 -
freeswitch两个DTMF转换接口的区别
freeswitch支持三种模式的DTMF传输方式,分别时inband、INFO、2833。在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中,需要将DTMF码做格式转换,通常是2833和inband之间的转换。freeswitch的“spandsp_start_dtmf”接口,表现更好,功能性更完整。freeswitch的DTMF从inband转换为2833的功能仍然有缺陷,表现为inband中的波形过滤不完全,会造成后续节点识别DTMF时重码的问题。原创 2023-05-11 17:27:33 · 867 阅读 · 0 评论 -
keepalived如何手动切换主备
主备部署中使用keepalived可以很方便的实现,安装维护简单,功能稳定。最近在使用过程中有小的发现,记录一下。keepalived功能稳定,配置简单,使用方便。空空如常求真得真。原创 2023-05-05 16:51:32 · 1276 阅读 · 0 评论 -
freeswitch的任务引擎问题与解决方案
freeswitch核心框架中有一个定时任务系统task,在开发过程中用来做一些延时操作和异步操作很方便。我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。但是在实际的生产应用中,该task模块在任务高并发的情况下发生了一些问题,通过压力测试可以重现。问题现象。1,task的group和desc为空的问题,并有极小概率造成coredump。2,task.runtime错误的问题,导致任务无法执行。原创 2023-04-26 18:14:50 · 524 阅读 · 0 评论