首页 > 其他分享 >FreeSWITCH容器化问题之rtp端口占用

FreeSWITCH容器化问题之rtp端口占用

时间:2023-09-24 11:00:26浏览次数:41  
标签:容器 占用 端口 rtp 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

内容:

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

 测试效果如下:

 

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

标签:容器,占用,端口,rtp,FreeSWITCH,RTP
From: https://www.cnblogs.com/MikeZhang/p/fsRtpPort20230924.html

相关文章

  • CentOS轻松查看监听端口,实用技巧与案例
    在进行服务器安全设置时,了解当前系统的监听端口是非常重要的。CentOS作为一种流行的Linux操作系统,在查看监听端口方面也有其独特的方法。本文将详细介绍如何在CentOS上查看监听端口,并提供相关案例、数据和技巧centos查看监听端口,帮助读者轻松掌握服务器安全。一、什么是监听端口?......
  • CentOS如何查看是否安装FTP并设置端口?
    FTP是传输文件的常用协议之一linux系统怎么样,而在CentOS系统上是否安装了FTP,对于管理者和用户来说都是非常关键的。本篇文章将从以下八个方面进行深入分析:1.什么是FTP;2.CentOS下如何安装FTP;3.CentOS下如何启动FTP服务;4.CentOS下如何设置FTP服务的端口;5.CentOS下如何设置匿名访......
  • 802.1D STP Port States(STP端口状态)
    STP3802.1DSTPPortStates(端口状态)生成树端口分为角色和状态:三种角色:RB根桥RP根端口DP指定端口2.五种状态:Disabled(禁用)端口Down掉或没插线、管理员关闭或默认关闭,这个状态既不能发送也不能接收帧。Blocking(阻塞)只能接受BPDU,不能发送或发送其他任何的......
  • linu 查看进程端口的几种方法
    kill命令Linuxkill命令用于删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。使用kill-l命令列出所有可用信号。最常用的信号是:1(HUP):重新加载进程。9(......
  • 解决:idea services窗口不显示端口号
    1.关闭所有java进程2.到此目录下“C:\Users\用户名\AppData\Local\Temp\hsperfdata_用户名”,将“hsperfdata_用户名”文件夹删除。3.IDEA重启一下,在Dashboard中启动项目,则可以在DashBoard中看到相应进程后面的端口号。 ......
  • CentOS7 关闭防火墙或开放端口
    CentOS7关闭防火墙或开放端口关闭防火墙systemctlstartfirewalld.servicesystemctlstatusfirewalld.servicesystemctlstopfirewalld.service#设置开机启用防火墙systemctlenablefirewalld.service#设置开机禁用防火墙systemctldisablefirewalld.service开......
  • 思科 显示连接的端口号
    1点击选项中的Options2选择Preferences3选择PortLabelsAlwaysShown(端口标签总是显示)4其他选项AnimationSound动画声ShowLinkLights显示链接灯HideDeviceLabel隐藏设备标签PortLabelsAlwaysshown端口标签总是显示......
  • freeswitch 新模块开发2
    1、随便找个地方,创建个目录mod_book2、在里面创建个mod_book.c文件,写入#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION(mod_book_load);SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_book_shutdown);SWITCH_MODULE_DEFINITION(mod_book,mod_book_load,mod_book_shutdown,N......
  • freeswitch 新模块开发
    1、在Debian系统上成功编译并通过源码安装freeswitch2、在src/mod/application/目录下新建mod_helloworld目录。2、在src/mod/application/mod_helloworld/目录下创建mod_helloworld.c文件3、在文件中写入如下内容:#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION......
  • pve系统盘扩容、网络IP设置、端口映射、DHCP服务器
    pve系统盘扩容fdisk/dev/vda输入n然后按几下回车直到提示Createdanewpartition最后输入w退出pvcreate/dev/vda4vgextendpve/dev/vda4vgs #查看可用容量lvresize-r-L+40G/dev/pvelvs  #查看lv卷大小在Datacenter->pve->System->NetworkCreate一个新的Linux......