科能融合网站导航摘要:网站包含产品、解决方案、开发者、资源、关于我们、成功案例和联系我们等内容。
通信百科
2018-08-17 14:52:41

SIP呼叫是怎么建立的?从注册、呼叫到RTP语音传输

SIP呼叫是如何建立的?本文从SIP终端注册、INVITE呼叫、180 Ringing、200 OK、ACK、RTP语音到BYE挂机,介绍SIP电话完整呼叫流程,并说明SIP服务器、SIP Trunk、语音网关及常见故障排查方法。
科能小logo

科能融合

SIP呼叫是怎么建立的?从注册、呼叫到RTP语音传输

SIP电话之间能够互相拨号,并不是直接通过SIP传输声音。一次普通SIP呼叫通常分成两部分:先通过SIP信令找到被叫并建立会话,再通过RTP或SRTP传输实际语音。

例如分机1001拨打1002,1001先向SIP服务器或IP PBX发出呼叫请求,系统根据号码找到1002。被叫振铃并接听后,双方确认媒体地址、端口和语音编码,随后开始传输语音。通话结束时,再通过SIP信令释放会话。

几个常见协议在这条链路中的作用并不相同:

  • SIP:负责注册、呼叫建立、振铃、接听和挂机等会话控制;
  • SDP:用于描述和协商媒体IP、端口、Codec等参数;
  • RTP/SRTP:负责通话中的实时语音或视频媒体传输;
  • SIP Trunk:用于连接IP PBX与运营商或其他SIP系统,并不是所有SIP呼叫都必须经过SIP Trunk。
SIP电话呼叫系统与IP通信示意图

SIP呼叫开始前为什么要注册

在常见的企业电话系统中,SIP话机启动以后会先向SIP服务器或IP PBX注册。

例如一台SIP话机配置了分机1001,同时填写服务器地址、认证用户名和密码。话机会通过REGISTER消息把自己的账号和当前联系地址提交给服务器。

SIP话机1001 → REGISTER → SIP服务器/IP PBX → 认证 → 注册成功

注册成功后,服务器就知道1001当前位于哪个IP地址和端口。当其他分机拨打1001时,可以根据注册信息把呼叫请求送到对应终端。

SIP并不要求所有设备都必须注册。两个终端也可以通过IP直呼等方式直接建立会话。但在企业电话、呼叫中心和融合通信项目中,通常会通过IP PBX集中管理号码、权限和呼叫路由。

一个SIP电话是怎么呼起来的

以分机1001拨打1002为例,一次典型呼叫主要经过以下几个步骤。

1. 主叫发送INVITE

用户在1001上拨打1002后,1001向SIP服务器发送INVITE请求。

INVITE中通常会包含主叫、被叫等信息,同时携带SDP,告诉对方自己支持哪些语音编码,以及准备在哪个IP地址和端口接收媒体。

1001 → INVITE → SIP服务器/IP PBX → INVITE → 1002

2. 被叫开始振铃

服务器收到INVITE后,可以先返回100 Trying,表示请求已经收到并正在处理。

1002开始振铃后,通常返回180 Ringing,主叫终端或上级平台可以据此提供回铃提示。

1001 ← 100 Trying
1001 ← 180 Ringing ← 1002

部分系统还会使用183 Session Progress建立早期媒体,例如在正式接听前播放运营商提示音或其他语音内容。

3. 被叫接听并返回200 OK

1002摘机后返回200 OK,表示接受此次会话。响应中通常也会携带SDP,用于确认媒体地址、端口和双方最终采用的Codec。

4. 主叫发送ACK

1001收到200 OK以后发送ACK,确认最终响应已经收到。

INVITE → 100 Trying → 180 Ringing → 200 OK → ACK

到这里,SIP层面的通话建立基本完成。实际网络中还可能出现认证、呼叫转移、183早期媒体等其他消息,但普通分机互拨的核心流程就是这一组信令。

电话接通以后,语音从哪里传输

电话接通后,连续传输声音的通常不是SIP,而是RTP或SRTP媒体流。

双方已经通过SDP知道对方的媒体IP、端口以及可以使用的语音编码。例如双方都支持G.711,则可以协商使用对应Codec建立语音媒体。

SIP:建立和控制会话
SDP:协商媒体参数
RTP/SRTP:传输实际语音

这也是为什么有些电话能够正常振铃、接听,但接通以后没有声音。

此时SIP信令可能已经正常完成,问题出在媒体路径。常见原因包括SDP中携带了错误地址、RTP端口被防火墙拦截、NAT处理异常,或者中间SBC和媒体代理没有正常转发音频。

在简单局域网中,两台SIP终端建立会话以后,RTP媒体可以直接在终端之间传输:

SIP话机1001 ═════ RTP/SRTP ═════ SIP话机1002

如果系统部署了SBC、录音平台、媒体代理或者需要进行转码,媒体也可能经过中间设备。

所以排查SIP电话时,信令和媒体最好分开检查。看到200 OK只能说明呼叫已经被接受,并不能证明双向语音一定正常。

SIP呼叫中常见的设备分别做什么

SIP终端

负责拨号和接听,可以是SIP桌面电话、软电话、调度台、SIP对讲终端或其他支持SIP的设备。

IP PBX或SIP服务器

负责分机注册、号码路由、呼叫权限和电话业务控制。企业内部1001拨打1002时,通常由这一层完成号码查找和呼叫处理。

SIP Trunk

企业需要通过IP方式连接运营商或其他电话系统时,可以使用SIP Trunk。

SIP话机 → IP PBX → SIP Trunk → 运营商网络

SIP Trunk属于外部中继方式,不能和“SIP呼叫”本身画等号。

语音网关

项目中如果还存在模拟电话、模拟外线或E1数字中继,可以通过FXS、FXO或数字中继网关接入SIP系统。

模拟电话 → FXS网关 → SIP服务器 → SIP话机

或者:

SIP话机 → IP PBX → FXO / E1网关 → 原有电话线路

SBC

跨公网、跨网络域或者需要和外部SIP平台互联时,经常会部署SBC,用于边界控制、NAT处理、安全策略、媒体代理和互操作适配。

如果只是同一局域网内少量SIP分机互拨,则不一定需要单独部署SBC。

SIP电话常见的三种组网方式

内部SIP分机互拨

SIP话机1001 → IP PBX / SIP服务器 → SIP话机1002

这是最基本的组网方式,整个呼叫可以在企业内部IP网络完成,不经过PSTN,也不需要SIP Trunk。

通过SIP Trunk拨打外部号码

SIP分机 → IP PBX → SIP Trunk → 运营商 → 外部电话

这种方式主要用于企业通过IP中继连接公共电话网络或其他SIP系统。

保留原有模拟或数字线路

SIP终端 → IP PBX → FXO / E1网关 → 原有电话线路

对于已经有模拟外线或E1线路的项目,可以通过语音网关继续使用原有资源,再根据建设计划逐步调整,不必为了使用SIP一次性更换全部线路。

SIP电话系统常见组网方式示意图

SIP呼叫出现问题怎么排查

分机注册失败

先检查服务器地址、SIP端口、用户名、认证密码以及网络连通性。

认证过程中第一次收到401 Unauthorized并不一定代表故障,它可能只是服务器发起认证挑战。终端带上认证信息重新REGISTER后仍然失败,再继续检查账号、密码和Realm等配置。

注册正常,但号码拨不出去

先确认INVITE是否正常发出,SIP服务器能否找到被叫,以及号码路由是否正确。

如果内部号码可以互拨,只有外部电话无法呼叫,则继续检查SIP Trunk、出局路由、号码格式和运营商侧状态。

电话能响,接通以后没有声音

这种情况优先检查媒体路径。

  • SDP中的媒体IP地址是否正确;
  • RTP端口范围是否被防火墙放行;
  • NAT转换是否正确;
  • SBC或媒体代理是否正常转发;
  • 双方是否存在共同支持的Codec。

只有一方能够听到声音

单通通常说明一个方向的RTP能够到达,另一个方向被阻断。跨公网部署时,可以重点检查NAT、防火墙规则以及SDP中填写的媒体地址。

声音卡顿或断续

如果呼叫建立正常,但通话出现卡顿、延迟或断续,应重点检查网络时延、抖动、丢包、带宽和QoS,而不是继续调整SIP账号。

一次普通SIP电话可以按“注册、信令、媒体”三部分来看。REGISTER负责终端注册,INVITE、180 Ringing、200 OK、ACK和BYE负责会话控制,SDP协商媒体参数,RTP或SRTP承担接通后的实时语音。

需要连接运营商时增加SIP Trunk,需要保留模拟或E1线路时增加语音网关,跨公网或不同网络域互联时再考虑SBC。出现故障时按照注册 → SIP信令 → SDP → RTP媒体的顺序检查,通常更容易定位问题。

目录