freeswitch系列五 解决xlite和freeswitch通话没有语音的问题

本文详细分析了Freeswitch与xlite进行SIP通话时遇到的语音不通问题,原因是Freeswitch回送的SDP信息中IP为私网地址,导致UDP包无法正确传输。通过修改freeswitch配置,使其支持NAT并开放公网端口,实现了NAT穿越,从而解决了通话无语音的问题。
摘要由CSDN通过智能技术生成

1. 概述

本文解决如下问题:xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音。

主要涉及如下内容:
1. 语音不通的原因分析
2. SDP协议
2. NAT的问题
3. freeswitch如何实现NAT的穿越的问题

2. 案例环境说明

软电话使用x-lite,使用freeswitch的默认的两个号码1008和1018。

freeswitch部署在服务器的私网地址是172.23.4.92,公网地址115.aa.aa.aa。
1008的测试机器在私网上(IP为10.240.80.69),通过115.aa.aa.aa:5060注册freeswitch,但是出去后的公网地址是59.bb.bb.bb。
1018的测试机器在私网上,通过115.aa.aa.aa:5060注册freeswitch,但是出去后的公网地址是123.cc.cc.cc

在172.23.4.92上,使用tcpdump捕获通信过程中的所有包
为了安全,本文把真实环境的公网地址,全部使用假的地址进行替换

3. 原因分析

xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音。

3.1 初步判断原因

  • a. 正常的流程时,1008和1018之间使用sip协议建立通话后,1008和1018的语音包不直接发送给对方,而是都先发送到freeswitch,由freeswitch转发给对方。但是他们之间通话信息传输使用的却是rtp包或其他UPD包,并且rtp包或其他UPD包不是在已经建立的sip协议线路上传输数据,而是使用别外一条线路传输,所有猜测有可能1008和1018的包都没有成功传输到freeswitch,导致无法听到对方声音
  • b. rtp包的传输使用的是UDP,且1008和1018都在内网,fs部署到公网,所以这里又涉及NAT的问题

3.2. SDP

第一个问题:1008和1018之间是如何知道对方的RTP包或其他UPD包交互的IP地址?答案是通过SDP相互知道的。SIP在建立会话时,SIP协议会包含相关的媒体(如视频和音频)的信息,媒体的相关的数据会包含在SDP中。SDP也会放在SIP协议的正文(body)中

3.3. 1008主叫的问题分析

1008 向freeswitch发起INVITE 消息包分析

No.     Time           Source                Destination           Protocol Length Info
    267 15.676245      59.aa.aa.aa         172.23.4.92           SIP/SDP  968    Request: INVITE sip:1018@115.aa.aa.aa:5060 | 

Frame 267: 968 bytes on wire (7744 bits), 968 bytes captured (7744 bits)
Ethernet II, Src: ZteCorpo_60:22:21 (00:22:93:60:22:21), Dst: Vmware_83:02:4d (00:50:56:83:02:4d)
Internet Protocol Version 4, Src: 59.aa.aa.aa, Dst: 172.23.4.92
User Datagram Protocol, Src Port: 24576 (24576), Dst Port: 5060 (5060)
Session Initiation Protocol (INVITE)
    Request-Line: INVITE sip:1018@115.aa.aa.aa:5060 SIP/2.0
    Message Header
    略..      
    Message Body
        Session Description Protocol
            Session Description Protocol Version (v): 0
            Owner/Creator, Session Id (o): - 13153395802875591 1 IN IP4 10.240.80.69
            Session Name (s): X-Lite release 4.9.8 stamp 84253
            Connection Information (c): IN IP4 10.240.80.69
            Time Description, active time (t): 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值