FreeSWITCH容器化问题之rtp端口占用
操作系统 :CentOS 7.6_x64、debian 11 (bullseye,docker)
FreeSWITCH版本 :1.10.9
Docker版本:23.0.6
FreeSWITCH容器化带来部署便利的同时,也会遇到一些问题,比如今天要讨论的RTP端口占用问题(FreeSWITCH申请宿主机已占用的端口)。
我将从以下三个方面进行展开:
1)从源码层面分析FreeSWITCH的端口分配及检查逻辑;
2)描述开启RTP端口占用检测的方法;
3)演示RTP端口占用检测效果;
FreeSWITCH容器化参考我之前的文章:
https://www.cnblogs.com/MikeZhang/p/dockerPackFs20230617.html
https://www.cnblogs.com/MikeZhang/p/dockerFS20230716.html
一、端口分配及检查逻辑
1、 端口查找的主循环
如果系统认为还有端口可分配,则一直重试,没有退出循环的逻辑,存在导致fs宕机的风险。

2、端口检查逻辑
端口检查通过bind函数实现,尝试bind,成功后,关闭socket,释放端口。
存在以下两个问题:
1) 效率不高;
2) bind后会执行释放操作,rtp使用时仍然会存在失败的风险;

二、启RTP端口占用检测的方法
FreeSWITCH默认不开启rtp端口检测占用,端口分配了就直接使用。可通过如下配置开启rtp端口检查。
文件 :autoload_configs/switch.conf.xml
内容:
<param name="rtp-port-usage-robustness" value="true"/>
三、RTP端口占用检测效果演示
1、调整端口范围
文件:autoload_configs/switch.conf.xml
内容:
<param name="rtp-start-port" value="$${force_rtp_start_port}"/>
<param name="rtp-end-port" value="$${force_rtp_end_port}"/>
2、容器外占用端口
安装netcat:
yum install netcat
占用端口:
nc -l -u 20002
3、呼叫测试
3.1、开启后可实现端口占用检查,如果占用了则重新分配
测试效果如下:

3.2、如果rtp端口范围比较小,会出现一直尝试分配端口的情况,可能会导致fs宕机
测试效果如下:

好,就这么多了,希望对你有帮助。
FreeSWITCH容器化问题之rtp端口占用的更多相关文章
- .NET Core容器化之多容器应用部署@Docker-Compose
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题. 2. Why Need Ngin ...
- Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api
Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fi ...
- .NET Core容器化之多容器应用部署-使用Docker-Compose
原文补充: -- docker-compose.ymlversion: ' services: mvc-web: container_name: mvc.web.compose build: . re ...
- Coding-Job:从研发到生产的容器化融合实践
大家好,我是来自 CODING 的全栈开发工程师,我有幸在 CODING 参与了 Coding-Job 这个容器化的编排平台的研发.大家对 CODING 可能比较了解, Coding.net 是一个一 ...
- 一看就懂-Docker容器化
一.Docker简介 1.1 什么是docker docker的英文意思是 码头工人,意思就是搬运东西的意思,其实这和docker的特点是一样的,docker提供的就是一种容器化搬运东西(我们的软件. ...
- 一次容器化springboot程序OOM问题探险
背景 运维人员反馈一个容器化的java程序每跑一段时间就会出现OOM问题,重启后,间隔大概两天后复现. 问题调查 一查日志 由于是容器化部署的程序,登上主机后使用docker logs Contain ...
- aspnetcore 容器化部属到阿里云全过程记录
第一次写博客,作为一个全栈er,记录一下从阿里云到产品运维上线的全过程 一.阿里云上的设置 购买阿里云ECS后: 进控制台查看实例公网IP 在控制台.网络与安全->安全组,配置规则 点击进去可以 ...
- Docker容器化技术(上)
目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...
- 翻译-在10行代码之内创建容器化的.net core应用
本文翻译自Hans Kilian的文章 Creating a containerized .NET core application in less than 10 lines of code htt ...
- 研发环境容器化实施过程(docker + docker-compose + jenkins)
目录 背景介绍 改造思路 容器构建 基础准备 中间件容器 外部依赖容器 业务应用容器 容器整合 自动构建容器 Maven相关 非Maven项目 总结 背景介绍 目前公司内部系统(代号GMS)研发团队, ...
随机推荐
- 公路堵车概率模型Python(Nagel-Schreckenberg交通流模型)
路面上有N辆车,以不同速度向前行驶,模拟堵车问题.有以下假设: 假设某辆车的当前速度是 v 如果 前方可见范围内没车,下一秒车速提高到 v+1 如果 前方有车,前车的距离为 d ,且 d < v ...
- Go语言编程技巧:实现高效的数据处理和企业应用程序
目录 Go语言编程技巧:实现高效的数据处理和企业应用程序 摘要 Go语言是一种现代的编程语言,以其高效.简洁.安全.可靠等优点而备受欢迎.本文将介绍Go语言编程技巧,包括数据处理和企业应用程序方面的应 ...
- Kubernetes(k8s)访问控制:权限管理之RBAC鉴权
目录 一.系统环境 二.前言 三.Kubernetes访问控制 四.鉴权简介 五.配置客户端机器 六.设置k8s集群允许所有请求访问 七.设置k8s集群拒绝所有请求访问 八.RBAC授权 8.1 ro ...
- PTA 21级数据结构与算法实验8—排序
目录 7-1 统计工龄 7-2 寻找大富翁 7-3 点赞狂魔 7-4 插入排序还是归并排序 7-5 插入排序还是堆排序 7-6 逆序对 7-7 堆排序 7-8 石子合并 7-9 第k小 7-10 快速 ...
- jquery中for循环一共几种
$.each() 第一个参数是循环的对象 , 第二个参数对对象中的每一个元素 执行 function函数 ,function 的第一个参数 i 是索引,item 是 循环对象中的每一个元素.
- HTML超文本标记语言2
二.基本标签 1.文件标签(结构) <html> 根标签 <head> <title>页面标题(标签)</title> </head> &l ...
- springboot整合mqtt 消费端
用到的工具: EMQX , mqttx , idea 工具使用都很简单,自己看看就能会. 订阅端config代码: package com.example.demo.config; import lo ...
- 王道oj/problem7(判断数字是否为对称数)
网址:http://oj.lgwenda.com/problem/7 思路:用temp保存原数: 不断对原数进行/10及取余运算,并加到num2中: 最后判断num2是否与temp相等. 代码: #d ...
- OpenUSD联盟:塑造元宇宙的3D未来
一.引言 近日,美国3D内容行业的五家主要公司苹果.英伟达.皮克斯.Adobe和Autodesk联合成立了OpenUSD联盟(AOUSD).这一联盟的成立标志着元宇宙领域的一次重要合作,旨在制定元宇宙 ...
- trick : Trygub num
trick大意 我对于这个trick的理解为:支持位运算的高精度 维护一个以 \(b\)为基数的大数 \(N\),并支持以下功能: 给定(可能是负)整数 \(|x|, |y| \leqslant n\ ...