自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

求真得真的博客

VOIP C PYTHON

  • 博客(143)
  • 收藏
  • 关注

原创 rtpengine的docker化

本文介绍了使用Docker部署rtpengine媒体转发服务的实践过程。由于rtpproxy对多网卡支持不足,作者选择基于CentOS7.9环境编译rtpengine 13.1.1.6版本,通过Dockerfile构建自定义镜像,并配置与kamailio的联动。详细说明了源码获取、Docker镜像构建步骤及docker-compose部署配置,特别注意rtpengine需以前台模式运行。最终实现了kamailio+rtpengine的媒体转发方案,虽然配置比rtpproxy复杂,但功能更为强大,为后续方案优

2025-07-25 18:02:46 443

原创 Kamailio 5.8.3与rtpengine双网卡SBC集成要点

本文总结了Kamailio 5.8.3与rtpengine在双网卡模式下的集成配置关键点,包括:1)rtpengine模块的核心配置与方向控制flags;2)dispatcher模块实现公私网网关负载均衡;3)路由逻辑中网络方向识别与媒体流处理。重点在于通过direction标志控制rtpengine接口选择,并配合dispatcher实现双向呼叫的流量分发,同时支持音视频及RTCP媒体流转发。

2025-07-11 17:51:50 385

原创 Kamailio SIP+RTP双网卡SBC呼叫流程与媒体处理说明

本文档详细介绍了基于kamailio_sbc_dual_nic.cfg配置文件的双网卡SBC部署方案。核心组件包括Kamailio(5.8.3)负责SIP信令处理,rtpengine(mr13.1.1.6)管理媒体流转发,以及dispatcher模块实现网关负载均衡。文档重点阐述了公网与私网用户间的双向呼叫流程,包括SIP信令处理和rtpengine的媒体协商机制,特别是direction参数对接口选择的关键作用。同时说明了dispatcher模块的负载均衡原理和Kamailio配置要点,强调了对音视频和R

2025-06-27 18:02:13 1042

原创 Rtpengine 全面指南 (mr13.1.1.6):启动参数、配置详解及双网卡SBC部署实例

《Rtpengine媒体代理配置指南》摘要 本文详细解析了rtpengine mr13.1.1.6版本的配置方法,重点包括: 进程启动参数的完整说明,涵盖接口绑定、端口范围、性能限制等关键选项 配置文件rtpengine.conf的参数详解,支持INI格式的多节配置 双网卡SBC服务器场景分析,阐述公私网媒体流转发原理 提供典型双网卡配置实例,包含公网/私网接口定义和NG控制协议设置 特别强调了interface参数的核心作用,通过逻辑接口名称实现精准的媒体路径控制。文档还指出与SIP代理(如Kamaili

2025-06-20 17:53:19 363

原创 freeswitch使用hiredis的limit功能

本文介绍了FreeSWITCH中limit模块的hiredis后端模式配置方法。相比hash模式,hiredis模式基于Redis实现,具有持久化和更好的集群支持优势。文章详细说明了在CentOS7.9环境下编译安装mod_hiredis模块、配置hiredis连接参数、以及在dialplan中应用limit规则的完整步骤。测试结果显示该模式能成功统计呼叫并发量,并通过Redis代理实现集群扩展。虽然性能与稳定性仍需验证,但hiredis模式为FreeSWITCH的并发控制提供了更灵活的解决方案。

2025-06-13 18:00:50 645

原创 Predixy的docker化

摘要:为解决hiredis只能连接单实例Redis而无法对接Redis Cluster的问题,本文采用Predixy作为代理中间件实现协议转换。详细介绍了基于CentOS 7.9的部署过程,包括1.0.5版本Predixy的源码编译、Docker镜像构建、集群配置文件(predixy.conf和cluster.conf)的配置要点,以及通过Docker-Compose的启动方式。测试验证显示FreeSWITCH已成功通过Predixy(10.55.55.136:7777)代理访问Redis Cluster集

2025-05-30 17:51:38 984

原创 FreeSWITCH Jitter Buffer 技术解析与应用指南

freeswitch是一款简单好用的VOIP开源软交换平台。Jitter Buffer(抖动缓冲器)是实时语音通信中解决网络抖动和延迟问题的核心技术。FreeSWITCH通过STFU(Sort Transportable Framed Utterances)库实现该功能,自1.6版本起,所有媒体相关变量统一采用"rtp_"前缀,取代历史版本中的"sip_"前缀。该功能默认禁用,需通过特定配置激活。

2025-05-16 17:56:06 498

原创 freeswitch配置视频对接

freeswitch是一款简单好用的VOIP开源软交换平台。随着4G/5G网络的完善,视频呼叫的需求慢慢变多,本文介绍使用fs对接视频线路的配置方案。fs配置视频比较容易,但是视频质量要求参数配置的正确,需要多测试和调整。目前fs中的264应该只支持透传模式。空空如常求真得真。

2025-04-25 17:43:33 383

原创 FreeSWITCH中SIP网关(Gateway)操作

通过灵活运用Sofia模块的网关操作命令,可实现FreeSWITCH与外部SIP服务的高效对接。监控常态化:定期执行检查网关健康度。空空如常求真得真。

2025-04-18 17:53:04 674

原创 DTMF从2833到inband的方案

freeswitch是一款简单好用的VOIP开源软交换平台。之前的文章中介绍过通过dialplan拨号计划配置的方法,实现2833到inband的转换,但是实际生产环境中的场景会更复杂,无法预先在dialplan中设置好相关参数和函数。根据sip协议的规范,在媒体协商的过程中,如果已经有183SDP或update的SDP了,则200SDP会被忽略。

2025-03-28 17:54:01 978

原创 fs的proxy_media模式失效

freeswitch是一款简单好用的VOIP开源软交换平台。在fs的使用过程中,某些场景只需要对rtp媒体做透传,又不需要任何处理。在fs1.6的版本中,我们可以使用proxy_media来代理媒体的转发,媒体的协商由AB路端对端处理,fs不处理媒体协商,也不处理媒体流,包括录音,dtmf检测等,仅仅原样转发媒体流。但是在fs的1.10.7版本中,proxy_media模式失效了。同步测试了fs1.6.19版本和fs1.10.7版本,其中1.6版本是可以正常使用proxy_media模式的。

2025-03-14 17:50:31 449

原创 spandsp_start_dtmf的bug及修复

freeswitch是一款简单好用的VOIP开源软交换平台。之前的文章中介绍过DTMF从2833到inband的转换,其中inband到2833的转换使用了“spandsp_start_dtmf”,这个函数在转换的过程中有缺陷。因为需要对inband的媒体流做缓存,所以该处理会产生40ms左右的语音时延。空空如常求真得真。

2025-01-23 17:53:52 772

原创 号码变换配置对接运营商IMS

freeswitch是一款简单好用的VOIP开源软交换平台。fs直接对接运营商,调试过程中的号码变换规则比较容易出问题。本文档记录一个较为通用的对接IMS配置方案。标准模板可以解决90%的问题,剩下10%需要定制。空空如常求真得真。

2024-11-01 17:46:33 932

原创 freeswitch的话单处理

freeswitch是一款简单好用的VOIP开源软交换平台。如果对cdr话单要求不高,可以直接使用fs的原始话单文件,使用脚本做一些简单的统计。fs暂时没发现有内置的话单统计和报表模块。自己实现吧。空空如常求真得真。

2024-10-25 17:34:12 674

原创 记录一次fs配置导致串线的问题

freeswitch是一款简单好用的VOIP开源软交换平台。fs在实际的使用过程中也会经常碰到莫名其妙的问题,大部分都是配置问题。fs的docker模式挺好用的,但是有不少要注意的坑。空空如常求真得真。

2024-09-20 17:45:41 657

原创 sipp模拟uas发送reinvite

freeswitch是一款简单好用的VOIP开源软交换平台。在更新了sipp模拟update的配置方案之后,我希望对比一下fs对update和reinvite的处理流程。本文档记录sipp的配置方案,该方案中包含了update和reinvite的信令。sipp很灵活,可以帮助我们在测试中构建各种模拟场景。先比对update消息和reinvite消息的处理流程,再针对具体问题进行优化。空空如常求真得真。

2024-09-13 17:28:02 1100

原创 sipp模拟uas发送update

freeswitch是一款简单好用的VOIP开源软交换平台。但是fs在处理update消息时候有BUG,为了复现问题,使用sipp模拟uas,发送update并发送DTMF码。本文档记录sipp的配置方案。sipp很灵活,可以帮助我们在测试中构建各种模拟场景。修复方案有多种,后续安排上。空空如常求真得真。

2024-08-30 17:56:02 852 2

原创 condition字符串匹配问题

freeswitch是一款简单好用的VOIP开源软交换平台。fs使用dialplan配置文件执行业务流程,condition条件变量的配置是必然会使用的,这里记录一次配置过程中的错误示范。fs的dialplan配置很方便,但是也容易出错。空空如常求真得真。

2024-08-07 17:45:14 748

原创 在python docker中安装ESL库

功能需求,把python脚本移植到docker中。因为python脚本中有使用freeswitch的ESL接口,所以需要安装python-ESL依赖库。本文记录在python:3.10.14-slim的docker镜像上编译安装python-ESL依赖库的流程。python基础镜像更换为python:3.10.14-slim,镜像大小只有150M左右。使用python镜像来运行外部脚本,脱离fs本身的docker容器限制。空空如常求真得真。

2024-06-28 17:47:07 828 1

原创 fs.1.10 ON rockeylinux8 dockerfile模式

freeswitch是一款简单好用的VOIP开源软交换平台。rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。编译出的docker镜像还是比较大,需要持续瘦身。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。

2024-06-14 17:58:41 1057

原创 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 1017

原创 freeswitch官方仓库

在使用源代码编译安装freeswitch的过程中,我们经常需要一些依赖库,其中freeswitch官方的yum源仓库是最齐全最方便的。但是,freeswitch仓库的配置和使用需要先在signalwire网站注册账号并获取PAT(personal access token)。fs官方仓库的依赖更全更方便。signalwire的账号注册有点麻烦,需要梯子,最新的登录还需要手机验证码,国内的验证码很难收到。空空如常求真得真。

2024-05-30 17:42:55 1586

原创 记录freeswitch的一个2833问题

freeswitch是一款简单好用的VOIP开源软交换平台。运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。临时方案覆盖面不足,无法保证所有线路都能通过该方式修正该问题。正式方案应该修改fs的200OK携带payload,可以动态的跟随update保持一致。空空如常求真得真。

2024-05-17 17:25:42 821

原创 记录一次fs通话无声的问题

freeswitch是一款简单好用的VOIP开源软交换平台。fs的实际应用中,由于网络、配置等问题,经常会产生通话无声的问题。实际生产环境中,网络和各种配置的异常情况特别多,需要根据实际情况一步步分析解决。fs不能仅仅关注服务本身的问题,服务器,网络的问题也都需要了解一点。在没有静态路由的场景下,网卡到fs服务的媒体流转发也会失败。空空如常求真得真。

2024-04-30 17:31:27 897

原创 centos6.5重启docker容器死机问题

近期在整理服务问题,使用docker容器重新部署服务。过程中有不少坑,主要是系统配置和系统版本的问题。抛弃centos6的时候到了。空空如常求真得真。

2024-04-19 17:32:56 1131 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 964

原创 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 722

原创 使用docker-compose管理freeswitch容器

之前的文章我们介绍过如何将freeswitch做成docker镜像,也使用命令行模式正常启动了fs的docker容器。但是当我们需要同时管理多个docker容器的时候,还是使用docker-compose更简单。docker-compose简化了多个docker容器的管理难度。对于docker集群的部署,使用docker-compose很方便。空空如常求真得真。

2024-03-16 11:10:31 1409

原创 centos docker服务问题

docker的应用版本正式上线,结果一上线就出各种幺蛾子。本文档主要介绍centos系统安装docker和启动的问题解决方法。docker registry的私服镜像使用方便。docker-compose管理镜像启动配置。空空如常求真得真。

2024-02-28 17:43:53 1258

原创 获取当天剩余时间

业务测试的过程中,本来有一个时间函数“获取当天剩余时间”,其中使用了localtime()和mktime(),但是在压力测试的过程中发现,两个time函数都不是线程安全的,多线程并发的时候会产生一些随机的错误,结果就是获得的interval时间错误,进而影响到业务流程。fs是多线程架构,对于大并发场景下的压力测试要特别注意线程安全的问题。为了尽可能的提高性能,也有很多技术手段可以不使用加锁的方式解决。空空如常求真得真。

2024-02-23 17:45:31 332

原创 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 1403

原创 freeswitch on centos dockerfile模式

freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式。centos系统后续的维护问题需要关注。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。

2024-01-19 18:20:15 1190

原创 freeswitch on centos docker

freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。

2024-01-10 17:35:08 1146

原创 CENTOS docker拉取私服镜像

docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。本文档主要介绍centos系统安装docker和拉取docker私服镜像的步骤和问题解决。尽快切换掉centos6系统。docker registry的私服镜像使用更方便。docker镜像包的瘦身工作要持续进行。空空如常求真得真。

2023-12-29 17:39:38 1448 1

原创 freeswitch on debian docker

freeswitch是一款简单好用的VOIP开源软交换平台。因为centos系统期限的原因,尝试在debian的docker上使用fs。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。

2023-12-22 17:51:23 1403

原创 freeswitch如何解决sip信令的NAT问题

freeswitch是一款简单好用的VOIP开源软交换平台。公网环境复杂多变,客户环境更是各种稀奇古怪的问题。fs在针对sip信令的NAT问题有针对性的参数设置。本文讨论的范围限于fs的公网地址正常没有在NAT后面的两种常见场景。其他更多更复杂的NAT场景暂不讨论。本文仅仅讨论了两种比较简单常见的NAT问题,公网环境中的NAT问题更加的复杂多变。对于NAT问题的通用思路是想办法找到对方或自己的公网地址,在消息传递过程中使用各种手段透传过NAT网关。空空如常求真得真。

2023-12-08 17:44:43 1214

原创 freeswitch设置多个execute_on_media

freeswitch是一款简单好用的VOIP开源软交换平台。fs中有非常多的接口和通道变量,使用方式多变。官方文档有时候也仅仅是介绍了最基本的使用方法和格式。execute_on大部分源码在switch_channel.c中。思考为什么测试结果中,先执行log1,再执行log0。空空如常求真得真。

2023-11-23 17:34:36 4147 1

原创 freeswitch的一个性能问题

freeswitch是一款简单好用的VOIP开源软交换平台。在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的。最近在测试某些场景的时候,压测会造成fs的内存占用持续升高,并在达到某个临界点的时候击溃fs的端口服务,导致全部sip呼叫响应503。fs启动打开的端口超过一定数目(1000)之后,会有内存占用过大和内存持续升高的问题。在删除多余的端口资源后,测试恢复正常。具体原因需要对sofia模块代码走读确定。空空如常求真得真。

2023-11-17 17:30:24 635

原创 sipp3.6多方案压测脚本

SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发。通过python脚本的子进程功能,我们可以很方便的实现sipp的多方案压测功能。sipp的github地址:https://github.com/SIPp/sipp后续会有更多的压测方案和脚本慢慢写。空空如常求真得真。

2023-10-26 17:54:48 622

原创 DOCKER本地仓库

随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。试用了docker的本地仓库功能,简单易上手,记录下来以备后用。首先删除本地自定义镜像,然后从registry重新下载。Docker镜像的本地库是CI自动化流程的必要步骤。Docker的registry镜像简单易上手。空空如常求真得真。

2023-10-12 17:09:50 782

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除