04-SIP配置
本章节下载: 04-SIP配置 (745.54 KB)
目 录
1.6.1 配置SIP呼叫路由(方式一:配置目的方IP地址)
1.6.2 配置SIP呼叫路由(方式二:配置使用SIP代理服务器)
1.10.2 配置VoIP语音实体发起SIP呼叫使用的传输协议
设备各款型对于本节所描述的特性支持情况有所不同,详细差异信息如下:
型号 |
特性 |
描述 |
MSR810/810-W/810-W-DB/810-LM/810-W-LM /810-LM-HK/MSR810-W-LM-HK |
SIP |
不支持 |
MSR 2630 |
支持 |
|
MSR3600-28/3600-51 |
支持 |
|
MSR 3610/3620/3620-DP/3640/3660 |
支持 |
|
MSR 5620/5660/5680 |
支持 |
|
MSR2600-10-X1 |
支持 |
SIP(Session Initiation Protocol,会话初始协议)是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话或多媒体会议。该协议能控制多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频和数据等)、媒体的编解码格式等。
SIP是类似于HTTP协议的基于文本编码的协议,具有易扩展、易实现等特点,因此非常适合用来实现基于因特网的多媒体通信系统,可以用来解决IP网络中的信令控制,为电信、银行、金融等行业提供更好的增值业务。
SIP协议采用Client/Server模型,主要通过客户端与SIP服务器之间的通信来完成用户呼叫。客户端为用户代理,SIP服务器有代理服务器、重定向服务器、位置服务器和注册服务器。
UA(User Agent,用户代理)是指支持SIP协议的终端。UA包括UAC(User Agent Client,用户代理客户端)和UAS(User Agent Server,用户代理服务器)。
· 用户代理客户端是指在SIP会话建立过程中主动发起会话请求的SIP终端。
· 用户代理服务器是指在SIP会话建立过程中接收会话请求的SIP终端。
在一个完整的通话过程中,每个UA既是UAC也是UAS。
代理服务器(Proxy Server)的作用是首先提供路由服务,即转发UA的请求或者响应,还可以提供呼叫控制、计费认证授权等功能。
重定向服务器(Redirect Server)用来将会话请求中的地址映射成其它新的地址,然后将新的地址返回给UAC,由UAC直接向这些新的地址发起请求。
位置服务器(Location Server)用来为代理服务器和重定向服务器提供UA信息。位置服务器记录了注册服务器接收到的UA的信息。
注册服务器(Registrar Server)接受用户注册,同时对用户的注册信息进行管理和维护。注册信息一般存储在位置服务器上,供查询时使用。
SIP主要有五个基本功能:
· 确定用户位置:确定被叫SIP终端所在的位置。SIP的最强大之处就是用户定位功能,它可以利用注册服务器上SIP终端的注册信息实现用户定位,也可以利用其它定位服务器,如DNS(Domain Name System,域名系统)、LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)等提供的定位服务来增强定位功能。
· 确定用户可用性:检查被叫SIP终端是否可以参加此会话。
· 确定用户能力:确定被叫SIP终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,使得会话双方都可以明确对方的会话能力。
· 建立会话:SIP会话双方通过协商媒体类型和媒体参数,最终选择双方支持的能力交集建立会话。
SIP消息采用文本方式编码,包括请求消息与响应消息两类。
SIP请求消息包括INVITE、ACK、OPTIONS、BYE、CANCEL和REGISTER等。RFC 3261定义的请求消息有以下六种。
· INVITE:发起会话请求,邀请用户加入一个呼叫。
· ACK:用于对请求消息的响应消息进行确认。
· OPTIONS:用于请求协商能力信息。
· BYE:用于结束已建立的呼叫。
· CANCEL:用于取消尚未建立的呼叫。
· REGISTER:用于向SIP注册服务器发起注册请求或注销。
SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如表1-1所示。
由于UAS/SIP服务器的原因,无法处理该请求 |
||
该请求在任何UAS/SIP服务器上都不能完成 |
SIP是一个应用层的会话协议,与一般协议不同的是,SIP协议可以支持各种传输协议:
· SIP支持UDP传输:UDP是一个无连接的协议,且不提供可靠性。在UDP上建立SIP连接存在不可靠性。
· SIP支持TCP传输:增加了SIP报文和语音传输的可靠性,通过TCP协议自身的特点为基于SIP的VoIP通信提供了面向连接和可靠的传输。使用TCP传输协议后,SIP协议可以不需要考虑报文丢失和重传问题。在SIP支持TCP传输的基础上,可以选用SIP支持TLS(Transport Layer Security,传输层安全)传输。SIP支持TCP传输仅仅保证了SIP报文和语音传输的可靠性,而SIP支持TLS传输则保证了SIP报文传输的安全性,具体内容请参见“1.3.1 信令加密”。
用户可以根据实际的应用环境采用不同的传输协议,目前不支持呼叫中切换传输协议。
TLS本身运行于TCP之上,并且提供了通信双方身份识别和加密SIP报文的一整套安全方案,为应用层协议服务。建立TLS连接时需要认证双方用户的身份,因此用户双方必须有各自合法的数字证书,只有通过认证的用户才可以进行后续的通信。使用TLS传输SIP报文,SIP报文在整个传输过程全部被加密,这样能够最大程度地保护用户数据不被他人非法窃取,提高了语音通信的安全性。
关于信令加密的配置请参见“1.11.1 配置SIP会话使用TLS传输协议”。
SIP支持TLS传输需要配置TLS的安全策略,具体配置请参见“安全配置指导”中的“PKI”和“SSL”。
目前支持的媒体流协议包括:RTP(Real-Time Transport Protocol,实时传输协议)和RTCP(Real-Time Transport Control Protocol,实时传输控制协议)。RTP用于为具有实时特征的数据(如交互音频和视频)提供端到端网络的实时传输服务;RTCP用于实时监控传输质量,并提供拥塞控制和流控制。RTP和RTCP配合使用,就能以有效的反馈和最小的开销使传输效率最佳化。由于网络中媒体流是明文传输的,为了保证通信内容的安全性,SRTP协议应运而生。
SRTP(Secure Real-Time Transport Protocol,安全RTP协议)可以实现对RTP/RTCP报文的加密、认证以及报文重传保护。关于媒体流加密的配置请参见“1.11.2 配置SIP呼叫使用SRTP协议”。
使用SRTP加密媒体流,首先需要协商加密信息,目前仅支持在SDP(Session Description Protocol,会话描述协议)中通过crypto头域进行加密协商。发起方将本端支持的加密属性信息发送给接收方进行协商,协商成功后,接收方返回相应的加密属性信息。会话建立后,双方各自使用自己的密钥加密RTP/RTCP报文,使用对端的密钥解密对方发送的RTP/RTCP报文。
SDP协商主要包括以下参数信息:
加密属性信息标识符,在不同的加密属性中的Tag值必须不同,接收方根据Tag值来决定使用哪一组加密属性 |
||
加密套件,用于定义加密和认证使用的算法。目前只支持AES_CM_128_HMAC_SHA1_80和AES_CM_128_HMAC_SHA1_32两种套件 |
||
会话信息定义了与该会话相关的参数,如密钥衍生率、UNENCRYPTED_SRTP、UNENCRYPTED_SRTCP、UNAUTHENTICATED_SRTP、FEC等 |
TLS可以保护通话中的控制信令,防止用户信息被窃取。SRTP协议可以对语音媒体流进行加密和认证等保护措施。两者可以单独使用,也可以同时使用,表1-3列举了四种组合方式。
信令加密或是媒体流加密在设备上既可以通过软件实现,也可以通过硬件加密引擎实现。通过软件实现的信令加密或是媒体流加密,由于复杂的加密/解密、认证算法会占用大量的CPU资源,将会影响设备整体处理效率;通过硬件加密引擎实现的信令加密或是媒体流加密,由于复杂的算法处理由硬件完成,因此可以提高设备的处理效率。
若设备支持通过硬件加密引擎进行认证和加/解密处理,则设备会首先将需要处理的数据发送给硬件加密引擎,由硬件加密引擎对数据进行处理之后再发送回设备,最后由设备进行转发。
有关加密引擎的详细介绍,请参见“安全配置指导”中的“加密引擎”。
表1-4 SIP配置任务简介
配置SIP UA注册 |
配置SIP鉴权信息 |
||
配置POTS语音实体向注册服务器发起注册 |
|||
配置SIP UA使用的注册服务器信息 |
|||
配置SIP呼叫路由 |
配置SIP呼叫路由(方式一:配置目的方IP地址) |
||
配置SIP呼叫路由(方式二:配置使用SIP代理服务器) |
|||
配置SIP呼叫路由(方式三:配置目的方的域名) |
|||
配置SIP呼叫外OPTIONS保活探测功能 |
|||
配置重传INVITE消息 |
可选 |
||
配置SIP扩展特性 |
|||
配置使用SIP带外方式传输DTMF信号 |
|||
配置SIP会话更新 |
|||
配置SIP呼叫内OPTIONS保活探测 |
可选 |
||
配置PSTN原因值和SIP状态码的映射关系 |
|||
配置与SIP主叫号码隐藏相关的头域 |
|||
配置PAI或PPI头域 |
|||
配置SIP可靠临时响应 |
|||
配置SIP支持VRF功能 |
可选 |
||
配置设备域名 |
可选 |
||
配置SIP会话使用的传输协议 |
配置发起SIP呼叫使用的全局传输协议 |
||
配置VoIP语音实体发起SIP呼叫使用的传输协议 |
|||
开启UDP/TCP传输协议的侦听端口 |
|||
配置TCP连接的老化时间 |
|||
配置SIP安全 |
配置SIP会话使用TLS传输协议 |
||
配置SIP呼叫使用的SRTP协议 |
|||
配置VoIP语音实体的URL类型 |
|||
配置QoS相关选项 |
|||
配置基于SIP-T架构的QSIG Tunnel |
注册是SIP UA向注册服务器发送注册请求,将SIP UA的相关信息(如地址信息、号码信息等)提供给注册服务器。注册过程如图1-1所示:
(1) SIP UA向注册服务器发送注册请求。
(2) 注册服务器回复200 OK响应消息,通知SIP UA注册成功。
图1-1 SIP注册过程
注册服务器可以要求用户鉴权,以保证用户身份的合法性。使用鉴权的注册过程如图1-2所示。
(1) SIP UA向注册服务器发送注册请求,在注册请求中携带需要注册的号码。
(2) 注册服务器回复401/407响应消息表示注册服务器需要对SIP UA进行鉴权,响应消息中携带参与鉴权的字段。
(3) SIP UA根据401/407消息中的鉴权字段查找SIP UA配置,并计算认证信息,然后将认证封装在注册报文中,重新向注册服务器发送带鉴权的注册请求。
(4) 注册服务器对收到的注册请求中的认证信息进行验证,如果一致,则回复200 OK响应消息,通知SIP UA注册成功。
图1-2 SIP注册过程(使用鉴权)
为了保证SIP UA能够成功注册,需完成以下任务:
· 在语音实体下已经使用match-template命令配置号码(目前不支持带有通配符的号码进行注册),并使用line命令将语音用户线绑定到指定的语音实体。
· 确保语音实体和使用的语音用户线处于开启状态(即处于undo shutdown状态)。
如果注册服务器需要提供鉴权,那么在SIP UA上需要设置SIP鉴权信息。SIP鉴权信息可以通过三种方式配置:
· 使用SIP视图下的user命令配置全局SIP鉴权信息
· 使用credentials命令配置SIP Trunk帐户的SIP鉴权信息。关于SIP Trunk帐户注册的详细介绍请参见“2 SIP Trunk”。
· 使用语音实体视图下的user命令配置语音实体的SIP鉴权信息
在配置SIP鉴权信息时,需要注意以下事项。
SIP UA上的号码最多可以向6个注册服务器发起注册,为了区分发送给不同注册服务器的带鉴权信息的注册请求,SIP UA需要根据注册服务器回复的401/407响应消息中的域名参数来匹配配置的鉴权信息。
在设备上,对于设置鉴权信息的user命令,无论是语音实体或是SIP视图下,只能配置一个username,该username可以组合12个不同的域名(命令行中的参数为realm),如果没有配置域名,表示该鉴权信息可以用于回复任何注册服务器的鉴权请求,如:
[Sysname-voice-dial-entity100] user 1000 password simple 1000 realm server1
[Sysname-voice-dial-entity100] user 1000 password simple 1000 realm server2
[Sysname-voice-dial-entity100] user 1000 password simple 2000 realm server3
[Sysname-voice-dial-entity100] user 1000 password simple 3000
假设SIP UA收到注册服务器回复的401/407响应消息中携带的域名是server2,那么SIP UA使用鉴权信息为用户名1000,密码1000。如果SIP UA收到注册服务器回复的401/407响应消息中携带的域名是server4,SIP UA上没有能和其精确匹配的鉴权信息,在这种情况下,就使用不带域名的鉴权信息,即用户名1000,密码3000。
如果SIP UA上存在相同号码的不同语音实体时,选取鉴权信息的优先级规则如下:只选取语音实体号最小的语音实体下的号码,若该语音实体没有此号码,选择credentials命令配置的号码。收到注册服务器回复的401/407消息后,SIP UA开始根据配置来选择鉴权信息。首先匹配语音实体视图下user命令配置的鉴权信息,如果匹配鉴权信息失败,就查找credentials命令配置的鉴权信息,如果匹配鉴权信息失败,继续查找SIP视图下user命令配置的鉴权信息。一旦匹配成功后,不再继续匹配。如果选取鉴权信息失败,则此号码注册失败。一旦已经有号码成功注册到注册服务器上,如果再增加满足匹配条件的语音实体,即使其优先级高,也不会影响号码的注册状态。
例如,号码1000需要注册到某个注册服务器上,注册服务器上对于号码1000的鉴权信息为用户名abcd,密码为1234,域名为abc。在SIP UA上对于号码1000存在如下配置。
# 在POTS语音实体1下配置SIP鉴权信息,用户名为abcd,以明文方式设置密码为1234,域名为aaa。
[Sysname] voice-setup
[Sysname-voice] dial-program
[Sysname-voice-dial] entity 1 pots
[Sysname-voice-dial-entity1] match-template 1000
[Sysname-voice-dial-entity1] user abcd password simple 1234 realm aaa
# 在POTS语音实体2下配置SIP鉴权信息,用户名为abcd,以明文方式设置密码为1234,域名为abc。
[Sysname] voice-setup
[Sysname-voice] dial-program
[Sysname-voice-dial] entity 2 pots
[Sysname-voice-dial-entity2] match-template 1000
[Sysname-voice-dial-entity2] user abcd password simple 1234 realm abc
# 配置SIP Trunk账户信息,号码为1000,用户名为abcd,以明文方式设置密码为1234,域名为abc。
[Sysname] voice-setup
[Sysname-voice] sip
[Sysname-voice-sip] credentials number 1000 username abcd password simple 1234 realm abc
# 配置全局SIP鉴权信息,用户名为abcd,以明文方式设置密码为1234,域名为abc。
[Sysname] voice-setup
[Sysname-voice] sip
[Sysname-voice-sip] user abcd password simple 1234 realm abc
对于语音实体1、2下的号码1000,选取语音实体号最小的进行匹配。语音实体1的鉴权信息无法和注册服务器匹配,按匹配顺序,继续匹配credentials命令下配置的鉴权信息,匹配成功后,不再继续匹配其它配置。使用display voice sip register-status显示SIP UA的注册状态信息,可以查看到在注册服务器上注册语音实体1下的号码1000。
<Sysname> display voice sip register-status
Number Entity Registrar Server Expires Status
--------------------------------------------------------------------------------
1000 1 192.168.4.240:5060 2877 Online
表1-5 配置全局SIP鉴权信息
进入SIP视图 |
||
配置全局SIP鉴权信息 |
user username password { cipher | simple } password [ realm realm ] |
缺省情况下,没有全局SIP鉴权信息 |
表1-6 配置POTS语音实体的SIP鉴权信息
配置POTS语音实体的SIP鉴权信息 |
user username password { cipher | simple } password [ realm realm ] |
缺省情况下,在POTS语音实体视图下没有SIP鉴权信息 |
该功能可以控制POTS语音实体是否向注册服务器发起注册。如果设备上的某些号码不需要注册,或是要在注册服务器上注销某些号码,可以执行undo register-number命令。
表1-7 配置POTS语音实体向注册服务器发起注册
创建POTS语音实体,并进入POTS语音实体视图 |
||
配置POTS语音实体向注册服务器发起注册 |
缺省情况下,完成SIP注册的相关配置后,POTS语音实体会向注册服务器发起注册 |
为了确保语音实体或SIP Trunk账户在注册服务器上注册信息的有效性,语音实体或SIP Trunk账户应该在注册老化时长超时之前重新向注册服务器发起注册,这个重新发起注册的时间由refresh-ratio参数决定。重新注册时间的计算方法如下:使用refresh-ratio参数配置注册老化时长的百分比,在“注册老化时长 × 注册老化时长的百分比”超时后,语音实体或SIP Trunk账户重新向注册服务器发起注册。
表1-8 配置SIP UA使用的注册服务器信息
进入SIP视图 |
||
配置SIP UA使用的注册服务器信息 |
缺省情况下,没有配置SIP UA使用的注册服务器信息 |
SIP呼叫路由分为三种:
· 直接使用IP地址。直接配置目的方的IP地址和端口号。
· 使用SIP代理服务器。组网环境中具有SIP代理服务器,可以使用SIP代理服务器查找呼叫目的地址。
· 采用域名作为目的地址。这种配置使得SIP UA不需要关心目的方的具体地址,只需要知道目的方在网络中的唯一域名,通过和域名服务器配合,即可实现和目的方的通话。有关DNS的详细介绍,请参见“三层技术-IP业务配置指导”中的“域名解析”。目前只支持使用A类查询方式,需要配置目的地址的域名和端口号。
表1-9 配置SIP呼叫路由
进入VoIP语音实体视图 |
||
配置SIP呼叫路由 |
缺省情况下,没有配置SIP呼叫路由 |
表1-10 配置SIP呼叫路由
进入SIP视图 |
||
配置SIP UA使用的SIP代理服务器信息 |
proxy { dns domain-name port port-number | ip ip-address [ port port-number ] } |
缺省情况下,没有配置SIP UA使用的代理服务器信息 |
进入VoIP语音实体视图 |
||
缺省情况下,没有配置SIP呼叫路由 |
表1-11 配置SIP呼叫路由
进入VoIP语音实体视图 |
||
启用呼叫外OPTIONS保活探测功能后,本端会按配置的up-interval参数定时发送OPTIONS报文,如果本端设备在up-interval时间内收到对端应答报文,则表示该VoIP语音实体可用,本端继续使用up-interval参数定时发送OPTIONS报文;如果本端在up-interval时间内没有收到应答报文或是收到的应答报文为408、499以及5XX(500、501、502、503、504、513除外),会开始重复探测,每次探测的时间间隔由timers options命令控制,在完成重复探测后,若还未收到表示语音实体可用的应答报文,则表示该VoIP语音实体不可用。
如果语音实体被判定为不可用,则本端会按配置的down-interval参数定时发送OPTIONS报文,如果收到表示语音实体可用的应答报文,会开始重复探测,每次探测的时间间隔由timers options命令控制,在重复探测期间,本端每次都能收到对端应答报文,则将该VoIP语音实体的状态恢复为可用。如果一直没有收到表示语音实体可用的应答报文,则本端继续按配置的down-interval参数定时发送OPTIONS报文。
需要注意的是,对已经被shutdown的VoIP语音实体,保活探测功能不生效。
进入VoIP语音实体视图 |
||
开启呼叫外OPTIONS保活探测功能,并配置保活报文的时间间隔 |
缺省情况下,呼叫外OPTIONS保活探测功能处于关闭状态 |
|
进入SIP视图 |
||
配置在开启呼叫外OPTIONS保活探测功能后,在重复探测期间,发送OPTIONS报文的时间间隔 |
只有使用voice-class sip options-keepalive命令开启保活探测功能后,该配置才能生效 缺省情况下,发送OPTIONS报文的时间间隔为500毫秒 |
通话发起方发送INVITE消息给应答方时会启动定时器,该定时器将使用用户配置的时间长度计时。在定时器超时后仍未收到应答方的100 response响应报文时,发起方将重传INVITE消息。
在重传次数达到配置的数值后仍未收到应答方的100 response响应报文时,设备将做拆线处理。
表1-13 配置重传INVITE消息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP视图 |
sip |
- |
配置INVITE消息未被响应时的重传次数 |
retry invite times |
缺省情况下,INVITE消息未被响应将重传6次 |
配置通话发起方等待应答方回复的100 response消息的时间长度 |
timers trying timer-length |
缺省情况下,通话发起方等待应答方回复的100 response消息的时间长度为500毫秒 |
未开启可信节点功能,设备会接受所有SIP呼叫。开启可信节点功能后,设备只接收来自可信节点的SIP呼叫。
进入SIP视图 |
||
开启可信节点功能 |
ip address trusted authentication |
缺省情况下,可信节点功能处于关闭状态 |
源接口绑定功能是指在使用SIP协议时,用户可以通过命令行配置指定发送的SIP信令流或媒体流的源接口。源接口绑定功能将SIP信令流和媒体流的源地址绑定到某一接口上,此接口下的IP地址即为发送媒体流或是SIP信令的源地址。该接口上的地址可以通过DHCP或PPPoE服务器动态分配。这种方式解决了当接口IP地址变换时,需要手工更新配置的缺点,方便网络管理。目前支持源接口绑定的接口类型有三层以太网接口、LoopBack接口和Dialer接口(VoIP语音实体下的源接口绑定命令不支持LoopBack接口)。配置此方式时,请使用存在主IP地址,并且状态为up的接口作为源接口,否则源接口绑定功能失效。
关于DHCP功能的介绍和配置,请参见“三层技术-IP业务配置指导”中的“DHCP”。关于PPPoE功能的介绍和配置,请参见“二层技术-广域网接入配置指导”中的“PPPoE”。
源接口绑定功能可以在SIP视图或者是VoIP语音实体视图下配置。SIP视图下的bind命令为全局命令,当VoIP语音实体下配置源接口绑定时,会使用VoIP语音实体配置,否则使用全局命令配置的源接口绑定,即VoIP语音实体配置优先于全局配置。
进入SIP视图 |
||
bind { control | media } source-interface interface-type interface-number |
缺省情况下,没有配置源接口绑定功能。使用路由出接口的IP地址作为设备发送SIP信令或媒体流的源地址 |
表1-16 配置VoIP语音实体的源接口绑定功能
进入VoIP语音实体视图 |
||
voice-class sip bind { control | media } source-interface interface-type interface-number |
缺省情况下,VoIP语音实体下没有配置源接口绑定功能。如果该语音实体下没有配置源接口绑定,那么该VoIP语音实体的缺省情况与全局源接口绑定的配置情况相同 |
· 对于媒体流,媒体流的源接口不会随配置立即更新。在下一次创建新的SIP会话后,该绑定才会在相应的媒体流上生效 · 对于SIP信令,配置将立即生效 |
|
源接口绑定功能失效,SIP信令流或媒体流的源地址恢复为缺省情况 |
|
绑定接口的IP地址被删除或绑定的接口被删除 |
|
绑定的接口从DHCP或或PPPoE服务器动态获得了新的IP地址 |
使用最新的IP地址作为媒体流或信令流的源地址 |
正在进行SIP注册 |
在用户通话过程中,可以使用两种方式传输DTMF(Dual Tone Multi-Frequency,双音多频)信号。
· 带内方式:将DTMF信号封装成RTP(Real-Time Transport Protocol,实时传输协议)报文发送到对端。
· 带外方式:从DTMF信号中提取相应信息,然后封装成SIP消息发送到对端。建议配置该方式时,在主被叫设备上同时开启outband sip命令。
表1-18 配置使用SIP带外方式传输DTMF信号
配置使用SIP带外方式传输DTMF信号 |
在通信网络中会出现呼叫双方会话已经结束,但可能由于BYE报文的丢失,而没有通知到SIP代理服务器,导致SIP代理服务器认为会话依然存在,仍然保留该过程中保存的连接信息,造成SIP代理服务器资源的浪费。
为解决该问题,RFC 4028中定义会话更新机制,通过周期性发送re-INVITE或者UPDATE报文,使SIP代理服务器或UA获取当前会话状态。
会话定期更新使用Session-Expires和Min-SE两个头域,以及422应答(Session Interval Too Small):
· Session-Expires头域:定义SIP会话的最长持续时间,即在该时间内没有收到更新请求则认为会话已经结束。
· Min-SE头域:定义SIP会话的最短持续时间,用于防止频繁发送会话更新请求导致的带宽占用。
· 422:当UAS或者SIP代理服务器收到一个携带Session-Expires头域的会话更新请求,如果该头域的时间值小于本端Min-SE头域的值,UAS或者SIP代理服务器会发送携带自身Min-SE头域值的422应答拒绝该请求,并使用Min-SE头域通知请求方其所能接受的最短会话时间。
会话更新执行者和SIP会话的最长持续时间是由SIP UA和SIP代理服务器协商确定的。完成协商后,由会话更新执行者周期性的发送re-INVITE或者UPDATE报文,如果没有收到应答报文,或是对端没接收到re-INVITE或者UPDATE报文,则会发送BYE报文结束会话。
表1-19 全局配置SIP会话更新
进入SIP视图 |
||
全局开启会话更新功能 |
缺省情况下,设备作为UAC,不主动启用会话更新功能。设备作为UAS,支持会话更新功能 在UAC上配置该命令 |
|
配置SIP会话更新参数 |
缺省情况下,SIP会话的最短持续时间和SIP会话的最长持续时间均为1800秒 |
表1-20 配置VoIP语音实体下的会话更新功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
开启VoIP语音实体下的会话更新功能 |
voice-class sip session refresh [ global ] |
缺省情况下,VoIP语音实体下的会话更新功能开启状态与全局开启状态保持一致 |
会话更新机制能够解决SIP代理服务器由于未收到BYE报文而依然保留连接信息的问题,避免了SIP代理服务器资源的浪费。若会话的一方不支持会话更新机制,则可使用呼叫内OPTIONS保活探测机制,设备通过周期性发送OPTIONS报文来探测远端UA的会话状态。
表1-21 全局配置呼叫内OPTIONS保活探测
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP视图 |
sip |
- |
全局开启呼叫内OPTIONS保活探测 |
options-ping seconds |
缺省情况下,全局呼叫内OPTIONS保活探测功能处于关闭状态 在呼叫建立前,如果会话更新协商成功,则呼叫内OPTIONS保活探测功能不生效 |
表1-22 VoIP语音实体下配置呼叫内OPTIONS保活探测
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
开启保活探测功能,并配置保活报文的发送时间间隔 |
voice-class sip options-ping { global | seconds } |
缺省情况下,VoIP语音实体呼叫内OPTIONS保活探测使用全局配置 |
在SIP网络和PSTN网络互通时,SIP状态码和PSTN原因值之间使用默认的映射关系,具体的默认值可以参见“语音命令参考”中的“SIP”。为了适应更复杂的组网应用,用户也可以通过命令行修改默认的映射关系,实现灵活转换PSTN原因值和SIP状态码的映射关系。
表1-23 配置PSTN原因值和SIP状态码的映射关系
进入SIP视图 |
||
配置与PSTN原因值对应的SIP状态码 |
缺省情况下,PSTN原因值和SIP状态码的对应关系请参见“语音命令参考”中的“SIP” |
|
配置与SIP状态码对应的PSTN原因值 |
缺省情况下,SIP状态码和PSTN原因值的对应关系请参见“语音命令参考”中的“SIP” |
|
显示PSTN原因值和SIP状态码的映射关系 |
当呼叫发起方需要隐藏主叫号码,或当ISDN之间通过SIP网络连接,需要通过SIP网络透传主被叫号码信息时,可以配置如下头域。
· 配置添加Privacy头域:如果Privacy头域中出现“Privacy: none”,表示在头域中不隐藏主叫号码。如果Privacy头域中出现“Privacy: id”,表示隐藏主叫号码。
· 配置添加Remote-Party-ID头域:如果该头域中出现“privacy=off”,表示在头域中显示主叫号码;如果该头域中出现“privacy=full”,表示隐藏主叫号码。配置此头域后,表示设备发送的INVITE消息中携带Remote-Party-ID头域。接收设备上收到携带该头域的INVITE请求,无论是否配置此头域,都会优先从该头域中获取主叫信息。
需要注意的是,Remote-Party-ID头域不能与P-Preferred-Identity头域或P-Asserted-Identity头域同时存在。
表1-24 配置与SIP主叫号码隐藏相关的头域
进入SIP视图 |
||
配置发送的INVITE消息中携带Privacy头域 |
缺省情况下,发送的SIP消息中不携带Privacy头域 |
|
配置发送的INVITE消息中携带Remote-Party-Id头域 |
缺省情况下,发送的INVITE消息中携带Remote-Party-ID头域 |
配置asserted-id pai命令,SIP消息中会携带P-Asserted-Identity头域。配置asserted-id ppi命令,SIP消息中会携带P-Preferred-Identit头域。P-Preferred-Identity、P-Asserted-Identity和Remote-Party-ID这三个头域中的任何两个不能同时存在。
表1-25 配置PAI或PPI头域
进入SIP视图 |
||
配置发送的SIP消息中携带P-Asserted-Identity头域或者P-Preferred-Identity头域 |
缺省情况下,发送的SIP消息中不携带P-Asserted-Identit头域或者P-Preferred-Identity头域 |
如表1-1所示,SIP响应消息中有一类为临时响应,对临时响应可以开启可靠的重传机制,保证UAS回复的临时响应18x不会因为网络环境不稳定而丢失。SIP可靠临时响应的过程如下:
(1) UAC在发送的INVITE消息中携带Require或Supported头域,表示强制要求或支持SIP可靠临时响应。
(2) UAS回复可靠的临时响应(18x中携带Require: value头域)。
(3) UAC收到可靠的临时响应后,向UAS发送PRACK消息,表示确认收到临时响应。
(4) UAS收到PRACK消息后回复200 OK。
如果在规定时间内,UAS没有收到UAC发送的PRACK消息,UAS会认为UAC没有收到18x,然后重发18x消息,以此来实现SIP临时响应的可靠传输。关于SIP可靠临时响应的详细说明可以参考RFC 3262。
如果需要使用SIP可靠临时响应,建议在UAC和UAS上配置该功能处于非关闭状态,且头域中的value值保持一致。rel1xx require和rel1xx supported的区别如下:
· 在UAC上配置rel1xx require命令,UAC发送的INVITE请求中携带Require: value头域,表示UAC强制要求UAS回复可靠的临时响应(18x中携带Require: value头域)。如果在UAS上配置rel1xx disable命令,即不支持SIP可靠临时响应,在这种情况下,UAS回复420,呼叫被终止。
· 在UAC上配置rel1xx supported命令,UAC发送的INVITE请求中携带Supported: value头域,表示UAC支持但不强制SIP可靠临时响应。如果在UAS上配置rel1xx disable命令,即不支持SIP可靠临时响应,UAS回复不可靠的临时响应(18x中不携带Require: value头域)。在这种情况下,呼叫正常进行,但是不能可靠传输临时响应。
表1-26 配置SIP可靠临时响应
进入SIP视图 |
||
配置SIP可靠临时响应 |
缺省情况下,发送的SIP消息中携带Supported: value头域,即命令行rel1xx supported 100rel生效 |
开启SIP支持VRF(VPN Routing&Forwarding,VPN路由转发)功能后,语音SIP服务与指定的VPN实例相关联,PE(Provider Edge,服务提供商网络边缘)设备能够在VPN实例中使用SIP业务。VPN实例关联的接口地址将作为设备发送SIP信令或媒体流的源地址。
当正在使用呼叫、注册、订阅或保活等SIP业务时,无法配置和取消语音SIP服务与指定VPN实例关联。另外,在配置语音SIP服务与指定VPN实例关联前,需要先创建该VPN实例。
表1-27 配置SIP支持VRF功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VPN实例 |
ip vpn-instance vpn-instance-name |
缺省情况下,未创建任何VPN实例 |
退回系统视图 |
quit |
- |
进入语音视图 |
voice-setup |
- |
进入SIP视图 |
sip |
- |
配置语音SIP服务与指定VPN实例关联 |
vpn-instance vpn-instance-name |
缺省情况下,语音SIP服务不与任何VPN实例关联 |
未配置设备的域名,本端设备发出的SIP报文中的CONTACT头域会携带IP地址;配置了设备的域名后,本端设备发出的SIP报文中的CONTACT头域会携带域名。
表1-28 配置设备域名
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP视图 |
sip |
- |
配置设备域名 |
sip-domain domain-name |
缺省情况下,未配置设备域名 |
· 发送方和接收方必须配置相同的传输协议类型,如在发送方配置session transport tcp,那么在接收方需要配置transport tcp。
· 使用TCP传输协议进行呼叫、注册或订阅功能,都需要开启TCP传输协议的侦听端口。
SIP视图下的session transport命令表示的是全局采用的传输协议类型,如果用户需要针对某个呼叫采用其他的传输协议时,可以在对应的VoIP语音实体视图下配置相应的传输协议类型。当VoIP语音实体视图下配置的传输协议类型与SIP视图下的session transport命令配置的传输协议类型不一致时,则使用该VoIP语音实体下的配置,即VoIP语音实体配置优先于全局配置。
表1-29 配置发起SIP呼叫使用的全局传输协议
进入SIP视图 |
||
配置发起SIP呼叫使用的全局传输协议 |
表1-30 配置VoIP语音实体发起SIP呼叫使用的传输协议
进入VoIP语音实体视图 |
||
配置发起SIP呼叫使用的传输协议 |
缺省情况下,全局传输协议类型为UDP协议。VoIP语音实体下没有缺省传输协议类型。如果该语音实体下没有配置传输协议,那么该VoIP语音实体的缺省情况与全局传输协议相同 |
在设备上开启TLS传输协议的侦听端口后,设备才能接收到对端使用UDP/TCP传输协议发送的报文。
执行undo transport命令会删除当前已经建立的连接。
表1-31 开启UDP/TCP传输协议的侦听端口
进入SIP视图 |
||
开启UDP/TCP传输协议的侦听端口 |
缺省情况下,UDP和TCP传输协议侦听端口处于开启状态 |
TCP连接的老化时间是指建立的TCP连接处于空闲状态的时间,老化时间过后,会删除已建立的TCP连接。
表1-32 配置TCP连接的老化时间
进入SIP视图 |
||
配置TCP连接的老化时间 |
缺省情况下,TCP连接的老化时间为5分钟 |
· 发送方和接收方必须配置相同的传输协议类型,如在发送方处配置session transport tls,那么在接收方需要配置transport tls。
· 使用TLS传输协议进行呼叫时,VoIP语音实体下address sip命令的缺省端口号为5061。相关命令请参见“语音命令参考/SIP”中的命令address sip。
· 使用TLS传输协议进行注册时,registrar命令的缺省端口号为5061。相关命令请参见“语音命令参考/SIP”中的命令registrar。
· 使用TLS传输协议进行订阅时,mwi命令的缺省端口号为5061。相关命令请参见“语音命令参考/语音业务”中的命令mwi。
· 使用TLS传输协议进行呼叫、注册或订阅功能,都需要完成配置SSL策略的配置,确保设备上已申请的证书可用,并开启TLS传输协议的侦听端口。SSL策略的配置方法请参见“安全配置指导”中的“PKI”和“SSL”。
表1-33 配置TLS传输时使用的SSL策略名称
进入SIP视图 |
||
SIP视图下的session transport命令表示的是全局采用的传输协议类型,如果用户需要针对某个呼叫使用其它的传输协议时,可以在对应的VoIP语音实体视图下配置相应的传输协议类型。当VoIP语音实体视图下配置的传输协议类型与SIP视图下的session transport命令配置的传输协议类型不一致时,则使用该VoIP语音实体下的配置,即VoIP语音实体配置优先于全局配置。
表1-34 配置发起SIP呼叫使用的全局TLS传输协议
进入SIP视图 |
||
配置发起SIP呼叫使用的全局TLS传输协议 |
表1-35 配置VoIP语音实体发起SIP呼叫使用TLS传输协议
进入VoIP语音实体视图 |
||
配置VoIP语音实体发起SIP呼叫使用TLS传输协议 |
缺省情况下,全局传输协议类型为UDP协议。VoIP语音实体下没有缺省传输协议类型。如果该语音实体下没有配置传输协议,那么该VoIP语音实体的缺省情况与全局传输协议相同 |
在设备上开启TLS传输协议的侦听端口后,设备才能接收到对端使用TLS传输协议发送的报文。
执行undo transport命令会删除当前已经建立的连接。
表1-36 开启TLS传输协议的侦听端口
进入SIP视图 |
||
开启TLS传输协议的侦听端口 |
缺省情况下,TLS协议侦听端口处于关闭状态 |
TLS连接的老化时间是指建立的TLS连接处于空闲状态的时间,老化时间过后,会删除已建立的TLS连接。
表1-37 配置TLS连接的老化时间
进入SIP视图 |
||
配置TLS连接的老化时间 |
缺省情况下,TLS连接的老化时间为30分钟 |
· 配置srtp命令,表示设备在发起呼叫时,INVITE消息中携带crypto和RTP/SAVP参数,如果收到对方的488应答,则会释放呼叫。
· 配置srtp fallback命令,表示设备在发起呼叫时,INVITE消息中携带crypto和RTP/SAVP参数,如果收到对方的488应答,会重新发送携带RTP/AVP参数的INVITE消息。
· 配置srtp命令,表示设备只能接收使用SRTP协议的呼叫。
· 配置srtp fallback命令,表示设备会优先使用SRTP协议进行媒体流协商,若协商失败,则使用RTP协议。
SIP视图下的srtp命令为全局命令,当VoIP语音实体下配置了媒体流协议时,则使用VoIP语音实体配置,否则使用SIP视图下的srtp命令的配置,即VoIP语音实体配置优先于全局配置。
表1-38 配置SIP呼叫使用的全局SRTP协议
进入SIP视图 |
||
配置SIP呼叫使用的全局SRTP协议 |
缺省情况下,SIP呼叫使用RTP协议 |
表1-39 配置VoIP语音实体发起SIP呼叫使用的SRTP协议
进入VoIP语音实体视图 |
||
配置发起SIP呼叫使用的SRTP协议 |
缺省情况下,全局SIP呼叫使用的媒体流协议为RTP协议。VoIP语音实体下没有缺省的媒体流协议。如果该语音实体下没有配置媒体流协议,那么该VoIP语音实体的缺省情况与全局媒体流协议相同 |
SRTP和SRTCP报文中包含MKI(Master Key Identifier,主密钥标识符)字段,配置MKI长度即配置MKI字段在SRTP或SRTCP报文中占用的空间大小。
若要配置mki命令并使其生效,SIP呼叫需使用SRTP协议。
表1-40 配置语音MKI长度
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP视图 |
sip |
- |
配置语音MKI长度 |
mki mki-length |
缺省情况下,设备不支持MKI |
SIP协议中的URL(Uniform Resource Locator,统一资源定位符)表示的是统一资源定位信息,目前设备可以支持SIP和SIPS(SIP secure,安全SIP)两种类型。当用户希望SIP信令交互能够得到端到端的安全TLS连接保证,可以配置SIPS类型,达到避免信息泄露的目的。
通过配置可以指定呼叫采用的URL类型类别。SIP视图下的url命令为全局命令,当VoIP语音实体下配置了URL类型时,会使用VoIP语音实体配置,否则使用全局命令配置的URL类型,即VoIP语音实体配置优先于全局配置。
只有传输协议为TLS时才能使用SIPS的URL类型。
进入SIP视图 |
||
缺省情况下,全局使用SIP格式的URL类型 |
表1-42 配置VoIP语音实体的URL类型
进入VoIP语音实体视图 |
||
配置VoIP语音实体的URL类型 |
缺省情况下,全局使用SIP格式的URL类型。VoIP语音实体下没有缺省的URL类型。如果该语音实体下没有配置URL类型,那么该VoIP语音实体的缺省情况与全局的URL类型相同 |
用户可以通过设置DSCP值对承载媒体流或语音信令的IP报文中DSCP值进行标记,从而实现语音服务质量的差异化。
载媒体流的IP报文中DSCP值可以在SIP视图或语音实体视图下配置。SIP视图下的ip qos dscp命令为全局命令,当语音实体下配置媒体流的IP报文中DSCP值时,则使用语音实体配置,否则使用全局命令配置的DSCP值,即语音实体配置优先于全局配置。关于语音实体视图下配置该值的方法请参见“语音配置指导”中的“语音实体”。
表1-43 配置QoS相关选项
进入SIP视图 |
||
配置承载媒体流或语音信令的IP报文中DSCP值 |
ip qos dscp { dscp-value | dscp-value-set } { media | signaling } |
缺省情况下,承载媒体流或语音信令的IP报文中DSCP值为ef(101110) |
基于SIP-T架构的QSIG Tunnel特性提供一种类似隧道的方式,通过“封装”和“映射”将ISDN信令转化为SIP消息(即在SIP消息中携带原始的QSIG信令),实现ISDN网络跨越SIP网络通信。和简单的对QSIG信令和SIP消息进行映射相比,SIP-T协议在传输中保持ISDN信令内容的完整性和丰富性,可以无损地将ISDN信令传输到跨SIP网络的另一侧ISDN网络。
在如下所示的组网中,Telephone A呼叫Telephone B,为了将QSIG信令的内容通过SIP消息透传给Router B,需要在在出口网关Router A上配置signaling forward rawmsg命令,实现Router A发送携带QSIG信令的SIP消息。在入口网关Router B上不需要配置该命令,Router B收到携带QSIG信令的SIP消息后,能够从SIP消息中提取QSIG信令,并发送到ISDN侧。并且,Router B收到ISDN侧的QSIG信令后,也能够通过SIP应答消息将QSIG信令发送到Router A。
图1-3 基于SIP-T架构的QSIG Tunnel
表1-44 开启SIP消息中携带QSIG信令功能
开启SIP消息中携带QSIG信令功能 |
缺省情况下,SIP消息中不携带QSIG信令 当ISDN网络使用重叠发号时,设备无法支持该功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP的运行情况,通过查看显示信息验证配置的效果。
表1-45 SIP显示和维护
显示SIP UA的注册状态信息 |
display voice sip register-status |
显示PSTN原因值和SIP状态码的映射关系 |
|
显示SIP当前的呼叫信息 |
|
显示SIP使用的传输层上的连接信息 |
|
删除SIP使用的传输层上的连接 |
Router A和Router B作为SIP UA,要求采用SIP协议直接呼叫目的方IP地址。
图1-4 SIP UA直接呼叫目的方IP地址组网图
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.2,被叫号码模板为2222。
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip ip 192.168.2.2
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.1,被叫号码模板为1111。
[RouterB-voice-dial] entity 1111 voip
[RouterB-voice-dial-entity1111] address sip ip 192.168.2.1
[RouterB-voice-dial-entity1111] match-template 1111
· 电话1111可以呼叫电话2222,同理,电话2222也可以呼叫电话1111。
· 使用display voice sip call命令可以查看到SIP当前的呼叫信息。
Router A和Router B作为SIP UA,先将号码注册到注册服务器上,然后通过SIP代理服务器完成呼叫。
· 在Router A上,所有号码使用相同的鉴权用户名和密码。鉴权用户名为routerA,密码为1234。
· 在Router B上,号码2222的鉴权用户名为routerB,密码为7890,域名为server1。
图1-5 SIP UA通过SIP代理服务器呼叫组网图
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置SIP UA使用的SIP注册服务器和SIP代理服务器的IP地址。
[RouterA-voice] sip
[RouterA-voice-sip] registrar 1 ip 192.168.2.3
[RouterA-voice-sip] proxy ip 192.168.2.3
# 配置鉴权信息,用户名为routerA,以明文方式设置密码为1234。
[RouterA-voice-sip] user routerA password simple 1234
[RouterA-voice-sip] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
# 配置VoIP语音实体,使用SIP代理服务器查找呼叫目的地址,被叫号码模板为2222。
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip proxy
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置SIP UA使用的注册服务器和SIP代理服务器的IP地址。
[RouterB-voice] sip
[RouterB-voice-sip] registrar 1 ip 192.168.2.3
[RouterB-voice-sip] proxy ip 192.168.2.3
[RouterB-voice-sip] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
# 配置鉴权信息,用户名为routerB,以明文方式设置密码为7890,域名为server1。
[RouterB-voice-dial-entity2222] user routerB password simple 7890 realm server1
# 配置VoIP语音实体,使用SIP代理服务器查找呼叫目的地址,被叫号码模板为1111。
[RouterB-voice-dial-entity2222] quit
[RouterB-voice-dial] entity 1111 voip
[RouterB-voice-dial-entity1111] address sip proxy
[RouterB-voice-dial-entity1111] match-template 1111
[RouterB-voice-dial-entity1111] quit
· 双方的号码在注册服务器上成功注册后,电话1111可以通过SIP代理服务器呼叫电话2222,同理,电话2222可以通过SIP代理服务器呼叫电话1111。
· 使用display voice sip register-status命令可以查看到电话1111和电话2222的注册状态。
· 使用display voice sip call命令可以查看到SIP当前的呼叫信息。
Router A和Router B作为SIP UA,通过DNS服务器查询目的地址后进行SIP呼叫。
图1-6 SIP UA通过DNS服务器查询目的地址后呼叫组网图
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置主机名cc.news.com对应的IP地址为192.168.2.2。
[RouterA] ip host cc.news.com 192.168.2.2
# 配置VoIP语音实体,呼叫目的的域名为cc.news.com,被叫号码模板为2222。
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip dns cc.news.com port 5060
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.1,被叫号码模板为1111。
[RouterB-voice-dial]entity 1111 voip
[RouterB-voice-dial-entity1111] address sip ip 192.168.2.1
[RouterB-voice-dial-entity1111] match-template 1111
· 电话1111通过DNS服务器查询目的地址后呼叫电话2222。电话2222通过查询被叫的静态IP地址呼叫电话1111。
· 使用display voice sip call命令可以查看到SIP当前的呼叫信息。
Router A和Router B作为SIP UA,要求号码为1111的电话使用TCP传输协议呼叫号码为2222的电话。
图1-7 SIP呼叫使用TCP传输协议组网图
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置发起SIP呼叫使用的全局TCP传输协议。
[RouterA-voice] sip
[RouterA-voice-sip] session transport tcp
[RouterA-voice-sip] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.2,被叫号码模板为2222。
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip ip 192.168.2.2
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置接收SIP呼叫时使用的传输协议为TCP(此步骤可选,因为在缺省情况下,TCP传输协议侦听端口处于开启状态)。
[RouterB-voice] sip
[RouterB-voice-sip] transport tcp
[RouterB-voice-sip] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.1,被叫号码模板为1111。
[RouterB-voice-dial] entity 1111 voip
[RouterB-voice-dial-entity1111] address sip ip 192.168.2.1
[RouterB-voice-dial-entity1111] match-template 1111
电话1111使用TCP传输协议与电话2222建立通话,通过display voice sip connection tcp命令可以查看TCP连接的信息。
Router A和Router B作为SIP UA,要求使用TLS传输协议建立SIP呼叫。
图1-8 SIP呼叫使用TLS传输协议组网图
· 本配置举例中,CA服务器上采用RSA Keon软件。关于TLS策略名称的具体配置请参见“安全配置指导”中的“SSL”。
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置PKI实体名称为aaa,通用名为RouterA。
[RouterA-pki-entity-aaa] common-name RouterA
[RouterA-pki-entity-aaa] quit
# 配置PKI域。创建PKI域voice,配置设备信任的CA的名称为voice。
[RouterA-pki-domain-voice] ca identifier voice
# 配置注册服务器URL,格式为http://host:port/Issuing Jurisdiction ID。其中的Issuing Jurisdiction ID为CA服务器上生成的16进制字符串。
# 配置证书申请的注册受理机构为CA。
[RouterA-pki-domain-voice] certificate request from ca
# 指定PKI实体名称为aaa并指定RSA密钥对的名称为keyname。
[RouterA-pki-domain-voice] certificate request entity aaa
[RouterA-pki-domain-voice] public-key rsa general name keyname
[RouterA-pki-domain-voice] quit
# 生成RSA算法的本地密钥对。
[RouterA] public-key local create rsa name keyname
# 获取CA证书并下载至本地。
[RouterA] pki retrieve-certificate domain voice ca
# 手工申请本地证书。
[RouterA] pki request-certificate domain voice
# 创建SSL服务器端策略,配置SSL服务器端策略所使用的PKI域。
[RouterA] ssl server-policy server
[RouterA-ssl-server-policy-server] pki-domain voice
# 创建SSL客户端策略,配置SSL客户端策略所使用的PKI域。
[RouterA] ssl client-policy client
[RouterA-ssl-client-policy-client] pki-domain voice
# 配置SIP会话使用TLS传输协议时选择的策略名称。
[RouterA-voice] sip
[RouterA-voice-sip] crypto ssl-server-policy server
[RouterA-voice-sip] crypto ssl-client-policy client
# 配置发起SIP呼叫时采用的传输协议类型为TLS。
[RouterA-voice-sip] session transport tcp tls
# 开启TLS传输协议的侦听端口。
[RouterA-voice-sip] transport tcp tls
[RouterA-voice-sip] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.2,被叫号码模板为2222,目的端口号为5061。
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip ip 192.168.2.2 port 5061
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置PKI实体名称为aaa,通用名为RouterB。
[RouterB-pki-entity-aaa] common-name RouterB
[RouterB-pki-entity-aaa] quit
# 配置PKI域。创建PKI域voice,配置设备信任的CA的名称为voice。
[RouterB-pki-domain-voice] ca identifier voice
# 配置注册服务器URL,格式为http://host:port/Issuing Jurisdiction ID。其中的Issuing Jurisdiction ID为CA服务器上生成的16进制字符串。
# 配置证书申请的注册受理机构为CA。
[RouterB-pki-domain-voice] certificate request from ca
# 指定PKI实体名称为aaa。
[RouterB-pki-domain-voice] certificate request entity aaa
[RouterB-pki-domain-voice] quit
# 生成RSA算法的本地密钥对。
[RouterB] public-key local create rsa
# 获取CA证书并下载至本地。
[RouterB] pki retrieve-certificate domain voice ca
# 手工申请本地证书。
[RouterB] pki request-certificate domain voice
# 创建SSL服务器端策略,配置SSL服务器端策略所使用的PKI域。
[RouterB] ssl server-policy server
[RouterB-ssl-server-policy-server] pki-domain voice
# 创建SSL客户端策略,配置SSL客户端策略所使用的PKI域。
[RouterB] ssl client-policy client
[RouterB-ssl-client-policy-client] pki-domain voice
# 配置SIP会话使用TLS传输协议时选择的策略名称。
[RouterB-voice] sip
[RouterB-voice-sip] crypto ssl-server-policy server
[RouterB-voice-sip] crypto ssl-client-policy client
# 配置发起SIP呼叫时采用的传输协议类型为TLS。
[RouterB-voice-sip] session transport tcp tls
# 开启TLS传输协议的侦听端口。
[RouterB-voice-sip] transport tcp tls
[RouterB-voice-sip] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.1,被叫号码模板为1111,目的端口号为5061。
[RouterB-voice-dial] entity 1111 voip
[RouterB-voice-dial-entity1111] address sip ip 192.168.2.1 port 5061
[RouterB-voice-dial-entity1111] match-template 1111
双方通过TLS传输协议建立SIP通话,通过display voice sip connection tls命令可以查看TLS连接的信息。
Router A和Router B作为SIP UA采用SIP协议进行呼叫。要求在呼叫建立之后,通话双方在通话过程中可以使用SIP带外方式传输DTMF信号。
图1-9 SIP带外方式传输DTMF信号组网图
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.2.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.2,被叫号码模板为2222。
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip ip 192.168.2.2
[RouterA-voice-dial-entity2222] match-template 2222
# 配置使用SIP带外方式传输DTMF信号。
[RouterA-voice-dial-entity2222] outband sip
[RouterA-voice-dial-entity2222] quit
# 配置POTS语音实体中的本地号码为1111,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 2/1/1
[RouterA-voice-dial-entity1111] match-template 1111
# 配置使用SIP带外方式传输DTMF信号。
[RouterA-voice-dial-entity1111] outband sip
# 配置GigabitEthernet2/0/1接口的IP地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.2.2 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置VoIP语音实体,呼叫目的IP地址为192.168.2.1,被叫号码模板为1111。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 1111 voip
[RouterB-voice-dial-entity1111] address sip ip 192.168.2.1
[RouterB-voice-dial-entity1111] match-template 1111
# 配置使用SIP带外方式传输DTMF信号。
[RouterB-voice-dial-entity1111] outband sip
[RouterB-voice-dial-entity1111] quit
# 配置POTS语音实体中的本地号码为2222,并将FXS语音用户线line2/1/1绑定到此POTS语音实体上。
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 2/1/1
[RouterB-voice-dial-entity2222] match-template 2222
# 配置使用SIP带外方式传输DTMF信号。
[RouterB-voice-dial-entity2222] outband sip
呼叫建立之后,通话过程中一方按键,DTMF信号会通过SIP带外方式传输到对方。
在如图2-1所示的传统电话网络中,企业通过内部的PBX完成所有内部呼叫,企业和外部的通信都是通过PSTN电话运营商提供的中继线路进行呼叫。
随着IP技术的发展,越来越多的企业部署如图2-2所示的基于SIP协议的IP-PBX,企业的内部呼叫都可以使用SIP协议。但企业如果要进行对外呼叫,仍然需要租用PSTN电话运营商的中继线路。这种组网的缺点是企业需要同时维护SIP网络和PSTN网络,增加了管理难度。
随着企业内大量部署支持SIP协议的IP-PBX以及通过SIP协议提供语音通信基础架构的ITSP(Internet Telephone Service Provider,互联网电话运营商)的逐渐增多,企业迫切需要一种能提供类似于传统PSTN中继线路的SIP中继技术,用于连接企业IP-PBX与外部的Internet电话运营商,实现全网IP化。这种SIP中继技术就是SIP Trunk,其典型组网图如图2-3所示。
SIP Trunk作为一种功能可以嵌入到部署在企业网络边缘的语音网关或防火墙中。能够实现SIP Trunk功能的设备称为SIP Trunk设备,或TG网关。
SIP Trunk具有以下特点:
(1) SIP Trunk设备和ITSP之间只需建立唯一的、安全的、具有QoS保证的SIP Trunk链路。通过该链路来承载企业的多路并发呼叫,运营商只需对该链路进行鉴权,不再对承载于该链路上的每一路SIP呼叫进行鉴权。
(2) 企业内部通信由企业IP-PBX负责。企业所有外出通信都通过SIP Trunk交由ITSP,再由ITSP中的设备发送到PSTN网络,企业不再需要维护原有的传统PSTN中继链路,节省了硬件和维护成本。
(3) 企业可以通过设置目的地址任意选择并连接到多个ITSP,充分利用遍布全球各地的ITSP,节省通话费用。
(4) 部署SIP Trunk设备后,全网可以使用SIP协议,可以更好地支持语音、会议、即时消息等IP通信业务。
(5) SIP Trunk设备不同于SIP代理服务器。SIP Trunk设备接收到用户的呼叫请求后,会代表用户向ITSP发起新呼叫请求。在转发过程中,SIP Trunk设备不但要对信令消息进行中继转发,对RTP媒体消息也需要进行中继转发。在整个过程中,SIP Trunk设备两端的设备(企业内部和企业外部设备)均认为和其交互的是SIP Trunk设备本身。
SIP Trunk设备部署在企业IP-PBX和ITSP之间。企业的所有内部呼叫通过企业内部的IP-PBX完成,企业的所有外部呼叫均通过SIP Trunk链路发送给ITSP。图2-4所示为应用SIP Trunk技术的实际组网图。
与SIP Trunk相关的协议规范有:
· SIPconnect Technical Recommendation v1.1
请完成VoIP语音实体配置,确保SIP Trunk两端的设备能够呼叫成功。
表2-1 SIP Trunk配置任务简介
配置允许SIP到SIP的VoIP呼叫连接 |
||
配置SIP Trunk账户注册 |
||
配置DO-EO转换 |
开启allow-connections sip to sip功能后,设备作为SIP Trunk设备。在设备作为SIP Trunk设备使用时,不推荐再将设备作为SIP UA使用。
允许SIP到SIP的VoIP呼叫连接 |
缺省情况下,不允许SIP到SIP的VoIP呼叫连接 |
在SIP Trunk设备上,运营商给用户分配的信息是通过配置SIP Trunk账户来完成的。SIP Trunk账户号码最多可以向6个注册服务器发起注册,为了区分发送给不同注册服务器的带鉴权信息的注册请求,SIP Trunk设备需要根据注册服务器回复的401/407响应消息中的realm值来匹配配置的鉴权信息。因此一个账户号码需要支持多域名参数,完成账户号码和realm值的配置后,SIP Trunk设备就能选择相应的用户名和密码发送给指定的注册服务器。目前,一个账户号码可以配置携带12个不同的域名,并且设备最多支持128个账户号码。完成SIP Trunk账户配置后,还需要配置registrar命令使SIP Trunk账户向指定的注册服务器发起注册。
表2-3 配置SIP Trunk账户注册
进入SIP视图 |
||
配置SIP Trunk账户信息 |
credentials number number username username password { cipher | simple } password realm realm |
缺省情况下,不存在SIP Trunk账户信息 |
SIP Trunk设备上配置的VoIP语音实体的编解码如果不能和呼叫双方的编解码存在交集,可以使用该命令开启SIP Trunk设备的编解码透传功能。开启SIP Trunk设备的编解码透传功能后,SIP Trunk设备不会干预呼叫两端的编解码协商,而是将编解码能力集透传给对方,由呼叫双方完成编解码协商。
进入VoIP语音实体视图 |
||
缺省情况下,SIP Trunk设备的编解码透传功能处于关闭状态,SIP Trunk设备参与呼叫双方的媒体协商 |
开启SIP Trunk设备的媒体旁路功能,可以使媒体流在呼叫的两个SIP端点间直接传输,SIP Trunk设备不参与媒体流协商。缺省情况下,媒体流经过SIP Trunk设备进行中继转发,SIP Trunk设备会隐藏SIP端点携带的媒体地址,将媒体地址替换为SIP Trunk设备的地址。当不需要隐藏媒体地址时,配置媒体旁路功能可以提升SIP Trunk设备性能。
进入VoIP语音实体视图 |
||
缺省情况下,媒体流经过SIP Trunk设备进行中继转发 |
携带SDP Offer的INVITE消息请求称为Early Offer,不携带SDP Offer的INVITE消息称为Delayed Offer。由于目前很多运营商均不接受不携带SDP Offer的INVITE消息,所以作为中间设备的SIP Trunk设备需要提供这种报文转换功能。在SIP Trunk设备上配置DO-EO转换功能后,设备可以将不携带SDP Offer的INVITE消息转换为携带SDP Offer的INVITE消息,以满足服务器业务呼叫的需求。
进入VoIP语音实体视图 |
||
使能DO-EO转换 |
缺省情况下,DO-EO转换功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP Trunk功能的运行情况,通过查看显示信息验证配置的效果。
表2-7 SIP Trunk显示和维护
查看SIP Trunk账户的注册状态 |
某企业部署SIP Trunk设备。其中,Router A为企业内网设备,Router B为企业外网设备,要求内外网之间的所有电话都要通过SIP Trunk设备。
(1) 在企业内网设备Router A上的配置思路如下:
· 在POTS语音实体中配置本地号码为2000。
· 在VoIP语音实体中配置被叫号码为1000,目的地址为SIP Trunk的接口地址。
(2) 在SIP Trunk设备上的配置思路如下:
· 配置SIP Trunk账户,配置运营商分配的用户名和密码,并将该账户注册到运营商的服务器上。
· 配置从内网到外网的呼叫路由。该呼叫路由通过SIP服务器组完成内网用户的对外呼叫。
· 配置从外网到内网的呼叫路由。该呼叫路由的目的地址为内网设备Router A的接口地址。
(3) 在企业外网设备Router B上的配置思路如下:
· 在POTS语音实体中配置本地号码为1000,并将号码注册到运营商的服务器上。
· 在VoIP语音实体中配置被叫号码为2000,目的地址为SIP Trunk设备上的接口地址。
图2-5 SIP Trunk典型配置举例
# 配置POTS语音实体中的本地号码为2000。
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2000 pots
[RouterA-voice-dial-entity2000] line 2/1/1
[RouterA-voice-dial-entity2000] match-template 2000
[RouterA-voice-dial-entity2000] quit
# 配置VoIP语音实体,被叫号码为1000,对端的IP地址为SIP Trunk的接口地址1.1.1.2。
[RouterA-voice-dial] entity 1000 voip
[RouterA-voice-dial-entity1000] address sip ip 1.1.1.2
[RouterA-voice-dial-entity1000] match-template 1000
# 配置允许SIP到SIP的VoIP呼叫连接。
[TG] voice-setup
[TG-voice] allow-connections sip to sip
[TG-voice] sip
# 创建SIP Trunk账户,号码为2000,用户名和密码为2000,域名为abc。.
[TG-voice-sip] credentials number 2000 username 2000 password simple 2000 realm abc
# 配置注册服务器信息。SIP Trunk账户向注册服务器10.1.1.2发起注册。
[TG-voice-sip] registrar 1 ip 10.1.1.2
[TG-voice-sip] quit
# 配置呼叫路由(内网用户2000向外网用户1000发起呼叫)。配置VoIP语音实体绑定的SIP服务器组索引为1。
[TG-voice-dial] entity 1 voip
[TG-voice-dial-entity1] address sip ip 2.1.1.2
[TG-voice-dial-entity1] match-template 1000
[TG-voice-dial-entity1] quit
# 配置呼叫路由(外网用户1000向内网用户2000发起呼叫)。对端的IP地址为内网设备Router A的接口地址1.1.1.1。
[TG-voice-dial-entity2] address sip ip 1.1.1.1
[TG-voice-dial-entity2] match-template 2000
# 配置POTS语音实体中的本地号码为1000。
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 1000 pots
[RouterB-voice-dial-entity1000] line 2/1/1
[RouterB-voice-dial-entity1000] match-template 1000
[RouterB-voice-dial-entity1000] quit
# 配置VoIP语音实体,被叫号码为2000,目的地址为SIP Trunk设备上的接口地址。
[RouterB-voice-dial] entity 2000 voip
[RouterB-voice-dial-entity2000] address sip ip 2.1.1.1
[RouterB-voice-dial-entity2000] match-template 2000
(1) 在SIP Trunk设备上查看SIP Trunk账户状态
[TG-voice-dial-entity2] display voice sip register-status
Number Entity Registrar Server Expires Status
--------------------------------------------------------------------------------
2000 0 10.1.1.2:5060 1802 Online
从上面的显示信息中可以看到,内网的账户2000已经注册到服务器10.1.1.2上。
(2) 内网和外网能够成功建立呼叫,且所有呼叫均通过SIP Trunk设备
内外网用户进行呼叫时,可以在SIP Trunk设备上使用display voice sip call命令查看到内外网之间的所有电话都经过SIP Trunk设备。
(3) 在运营商的SIP Server上只能看到SIP Trunk设备的接口地址,SIP Trunk设备实现了保护企业内网用户信息的作用。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!