首页 > 其他分享 >freeswitch 32秒自动挂断问题

freeswitch 32秒自动挂断问题

时间:2024-08-23 11:26:09浏览次数:10  
标签:SIP 被叫 32 主叫 ACK 挂断 freeswitch

freeswitch 32秒自动挂断问题

说明:

回顾一下SIP呼叫流程:

  • 主叫向被叫发送INVITE消息请求建立SIP会话
  • 被叫回复100 Trying消息,表示收到请求了
  • 然后被叫电话开始振铃,并回复180 Ringing通知主叫我这边开始振铃了
  • 被叫这边有人接了电话,被叫发送200 OK消息给主叫
  • 主叫收到200 OK消息后,向被叫回复ACK消息以作证实
  • 现在,主叫和被叫已经开始通话了,通话语音是通过SIP之外的RTP包传递的
  • 最后,一方挂断电话并向另一方发送BYE消息,另一方收到消息后回复200 OK消息
  • 通话完毕。

使用sngrep抓包:

sudo apt-get install sngrep
sudo sngrep

打电话,等自动挂断后,进入查看最新的记录:

┬─────────          ──────────┬─────────          ──────────┬
│        INVITE (SDP)         │                             │
│ ──────────────────────────> │                             │
│                        100 Trying                         │
│ <──────────────────────────────────────────────────────── │
│                        180 Ringing                        │
│ <──────────────────────────────────────────────────────── │
│                       200 Ok (SDP)                        │
│ <──────────────────────────────────────────────────────── │
│                            ACK                            │
│ ────────────────────────────────────────────────────────> │
│                            BYE                            │
│ ────────────────────────────────────────────────────────> │
│                          200 Ok                           │
│ <──────────────────────────────────────────────────────── │

发现ACK部分是红色的,移动向下方向键到ACK,可以看到:

ACK sip:[email protected]:55778;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 113.83.194.236;branch=z9hG4bKvKUDev3DQ7a0H
Max-Forwards: 70
From: "Extension 1009" <sip:[email protected]>;tag=atey5H2BZB78Q
To: <sip:[email protected]:55777;transport=tcp>;tag=yMlYjfV
Call-ID: 102cf5a8-db9c-123d-ecbb-00155d006606
CSeq: 87636657 ACK
Contact: <sip:[email protected]:5060;transport=tcp>
Content-Length: 0

可以看到主叫向被叫发送的ACK消息中,Contact的IP地址并非本地IP地址,因此导致被叫接受不到消息,ACK事务超时(默认32秒)后,主叫向被叫发送BYE消息来挂断电话。

解决方案:

修改 /etc/freeswitch/sip_profiles/internal.xml

    <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
    <param name="ext-sip-ip" value="$${external_sip_ip}"/>

将其注释,然后添加修正:

    <param name="ext-rtp-ip" value="$${local_ip_v4}"/>
    <param name="ext-sip-ip" value="$${local_ip_v4}"/>

将传输协议从TCP修改为UDP协议可能有用。

标签:SIP,被叫,32,主叫,ACK,挂断,freeswitch
From: https://www.cnblogs.com/shizidushu/p/18375669

相关文章

  • 【S32K144 不能正常debug问题】
    目录问题描述rootcause:解决方法:测试验证:问题描述工具:EBTresos+S32DS在开发S32K144的过程中,遇到了debug运行跑飞的情况,具体现象为:当程序包含Port_Init函数时,运行到Port_Init内的某一行,程序突然跑飞,不能停在下一行的断点上,Port_Init函数后的其他任一行也不能停在......
  • 《深海迷航:零度之下》user32.dll丢失导致游戏无法运行实用解决方法
    当你遇到《深海迷航:零度之下》(Subnautica:BelowZero)因缺少user32.dll文件而无法正常启动的问题时,可以尝试以下几种解决方法:了解问题user32.dll是一个Windows系统文件,包含了大量用于处理窗口和对话框的函数。如果游戏启动器或游戏本身需要这个文件而找不到它,就会出现错误......
  • STM32学习记录-04-EXTI外部中断
    1中断系统(1)中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行(2)中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源(3)中断嵌......
  • STM32学习记录-03-OLED显示屏(调试)
    1OLED简介OLED(OrganicLightEmittingDiode):有机发光二极管OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块(4行16列)供电:3~5.5V,通信协议:I2C(4针脚)/SPI(7针脚),分......
  • YC327B [ 20240821 CQYC NOIP 模拟赛 T2 ] 括号串(bracket)
    题意给定\(S\in\{(,),?\}\)。定义深度为括号嵌套的子序列的最大长度除以\(2\)。求出将\(?\)替换为括号的所有括号串的深度之和,对\(998244353\)取模。\(n\le10^6\)。Sol考虑如何把每次贡献只计算一次。不难想到在括号的中心点计算。可以发现,若当前左右括号......
  • STM32F4/M4 波特率寄存器 计数公式
    前言STM32中,USART控制器中的波特率寄存器是可以写入分频数(USARTDIV)小数部分的因此能够更精准地得到我们想要的波特率。波特率:每秒钟传输的二进制代码的位数波特率寄存器位说明 波特率计算公式:其中OVER8通过串口控制寄存器1(USART_CR1第15位来配置它就是用来设......
  • STM32 map 文件分析
    1、查看map文件双击        在编译过程中其实生成了很多过程文件,这里就不介绍(后期会详细介绍各个文件)。2、map文件的配置KEIL5->点击魔术棒->Listing选项卡3、简要介绍MAP文件        map文件是编译器链接时生成的一个文件,这个文件包含了链接信息。通......
  • LG - P3243
    给一些二元组,规定\((u,v)\)中,\(u\)的出现顺序要高于\(v\),并且要让值较小的尽量靠前出现,求最终的序列。第一眼看着像最小字典序拓扑序,写了一下,发现过不去\(3\)测。考虑如何转化到一个好写的东西。想让权值较小的数靠前出现,考虑权值较大的数,需要其在后面出现,并且较大的尽......
  • 算法笔记|Day32动态规划V
    算法笔记|Day32动态规划V※※※※※完全背包问题理论基本题目描述题目分析采用一维数组(滚动数组)☆☆☆☆☆leetcode518.零钱兑换II题目分析代码☆☆☆☆☆leetcode377.组合总和Ⅳ题目分析代码☆☆☆☆☆KamaCoder57.爬楼梯(待补充)题目分析代码※※※※※完全......
  • YC327A [ 20240821 CQYC NOIP 模拟赛 T1 ] 最值(minmax)
    题意对于一个序列\({b_n}\),规定:\[f_min(b)=\prod_{i=1}^n(min_{j=1}^ib_j)\]\[f_max(b)=\prod_{i=1}^n(max_{j=1}^ib_j)\]给定一个序列\(a\),求\(a\)所有的排列\(p\)的\(f_min(p)\)与\(f_max(p)\)之和。\(n\le5000\)Sol不难想到一个简......