码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

    一、端口分配及检查逻辑

     文件:switch_core_port_allocator.c

    1、  端口查找的主循环

    如果系统认为还有端口可分配,则一直重试,没有退出循环的逻辑,存在导致fs宕机的风险。

     2、端口检查逻辑  

    端口检查通过bind函数实现,尝试bind,成功后,关闭socket,释放端口。 

    存在以下两个问题: 

    1)  效率不高; 

    2)  bind后会执行释放操作,rtp使用时仍然会存在失败的风险;

    二、启RTP端口占用检测的方法

    FreeSWITCH默认不开启rtp端口检测占用,端口分配了就直接使用。可通过如下配置开启rtp端口检查。

    文件 :autoload_configs/switch.conf.xml

    内容:

    "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宕机

     测试效果如下:

     

    好,就这么多了,希望对你有帮助。 

  • 相关阅读:
    java 实现字典树(Trie)
    SAP EPIC 银企直连 F110S 付款程序的自动预定
    Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
    cppcheck使用大全
    同样是玩手机,有人变有钱了,有人变贫穷了?
    Wireshark的下载安装及简单使用教程
    【Python基础】 Python设计模式之单例模式介绍
    【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖
    区,段,碎片区与表空间结构
    合肥工业大学数据库实验报告
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/fsRtpPort20230924.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号