05-SIP配置
本章节下载 (1.38 MB)
1.9.2 配置SIP选路方式(方式一:配置目的方IP地址)
1.9.3 配置SIP选路方式(方式二:使用语音代理服务器)
1.12.2 配置接收SIP呼叫时使用UDP/TCP传输协议
2.10.2 SIP本地服务器为本地存活模式典型配置举例(方式一)
2.10.3 SIP本地服务器为本地存活模式典型配置举例(方式二)
3.6.1 配置SIP Trunk账户呼叫(方式一:绑定SIP服务器组索引)
3.6.2 配置SIP Trunk账户呼叫(方式二:指定目的地址)
3.6.3 配置SIP Trunk账户呼叫(方式三:使用SIP代理服务器)
3.17.1 SIP Trunk典型配置举例(SIP服务器组中只有一个服务器)
MSR800、MSR 900、MSR900-E、MSR 930、MSR 2600、MSR 30-11、MSR 30-11E、MSR 30-11F和MSR3600-51F路由器不支持语音功能。
SIP(Session Initiation Protocol,会话初始协议)是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体会话或多媒体会议。SIP是IETF多媒体数据和控制体系结构的核心协议(最新RFC文档是RFC 3261)。其主要目的是为了解决IP网中的信令控制,以及同软交换平台的通信,从而构成下一代的增值业务平台,对电信、银行、金融等行业提供更好的增值业务。
SIP用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频和数据等)、媒体的编解码格式、对组播和单播的支持等。SIP协议基于文本编码,大量借鉴了成熟的HTTP协议,并且具有易扩展、易实现等特点,因此非常适合用来实现基于因特网的多媒体通信系统。
根据RFC 2327的定义,多媒体会话(Multimedia Session)是指一组多媒体发送者和接受者,以及从发送者到接受者的数据流。例如一个多媒体会议就是一个多媒体会话。一个会话由一组用户名称、会话ID、网络类型、地址类型以及各个单元的地址来确定。
UA(User Agent,用户代理)也称SIP终端,是指支持SIP协议的多媒体会话终端。一般使用支持SIP协议的路由器作为SIP UA。
UA包括用UAC(User Agent Client,用户代理客户端)和UAS(User Agent Server,用户代理服务器)。一般说的UA均是指二者的总称,因为在一次呼叫中,一个SIP终端既要处理SIP请求,又要发起SIP请求。
用户代理客户端是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,它就成为用户代理客户端。
用户代理服务器是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时,也作为用户代理服务器。
代理服务器(Proxy Server)的作用就是传递主叫UA发送的会话请求到被叫UA,然后将被叫UA的响应传递回主叫UA,它相当于主叫UA和被叫UA之间传递会话消息的一座桥梁。代理服务器在接收到主叫UA的会话请求后,首先要向位置服务器请求查找被叫UA的位置以及主、被叫UA的呼叫策略信息。只有找到被叫UA并且此呼叫是允许的,代理服务器才会向被叫UA发送会话请求。
重定向服务器(Redirect Server)用来指示客户端连接的新地址。比如,主叫UA呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求。此位置可以是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。
位置服务器(Location Server)是为代理服务器和重定向服务器等提供UA信息的设备。位置服务器记录了注册服务器接收到的UA的信息。二者可以独立存在,也可以作为逻辑组件存在于同一台服务器上。
注册服务器(Registrar Server)接受用户注册,注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用。二者都是逻辑组件,一般存在于同一台服务器上。
SIP主要有五个基本功能:
· 确定用户位置:确定被叫SIP用户所在的位置。SIP的最强大之处就是用户定位功能,它可以利用SIP终端在注册服务器上的注册信息实现用户定位,也可以利用其他定位服务器,如DNS、LDAP等提供的定位服务来增强其定位功能。
· 确定用户可用性:确定被叫会话终端是否可以参加此会话。SIP支持多种地址描述和寻址方式,包括SIP-URI(比如sip:[email protected])、Tel-URL(比如tel:+1312000)和SIPS-URI(sips:[email protected])。这样,SIP主叫根据被叫地址,就可以识别出被叫是否在传统电话网上,然后通过一个与传统电话网相连的网关向被叫发起并建立呼叫。
· 确定用户能力:确定被叫终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,这使得会话双方都可以明确对方的会话能力。
· 建立会话:建立主被叫双方的会话。SIP会话双方通过协商媒体类型和媒体参数,最终选择双方都具有的能力建立起会话。
· 管理会话:可以更改会话参数或中止会话。
SIP的特点如下:
· 标准的开放性。可以将不同运营商引进的各种新的功能、产品和服务整合在一起,供用户自由地选择。
· 配置的灵活性。兼容多种拨号方式,能在有线或无线的设备上实现,可以进行高度灵活的配置,并且能够和其它系统协同工作。
· 系统可扩容性。随着企业规模的扩大,系统也可以随之扩充。
· 支持远端用户。无论用户身在何方,都可以将企业的网络延伸到那里。
· 企业各部分通讯方式的一致性。分支机构、家庭办公室和出差人员使用同样的拨号方式和系统访问方式,便于管理。
· 迅速启动。当建立新的分支机构、吸纳新的员工,或重新安排员工工作或改变其工作地点时,系统相应变更非常迅速。
· 易安装、可维护。非专业人士也可以安装或维护SIP系统。
SIP消息采用文本方式编码,包括请求消息与响应消息两类。
SIP请求消息包括INVITE、ACK、OPTIONS、BYE、CANCEL和REGISTER等。RFC 3261定义的请求消息有以下六种。
· INVITE:用于邀请用户加入一个呼叫。
· ACK:用于对请求消息的响应消息进行确认。
· OPTIONS:用于请求协商能力信息。
· BYE:用于释放已建立的呼叫。
· CANCEL:用于释放尚未建立的呼叫。
· REGISTER:用于向SIP注册服务器登记用户位置等信息。
SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类表1-1所示。
状态码编号 |
消息含义 |
消息归类 |
100~199 |
收到请求,正在处理中 |
临时消息 |
200~299 |
收到请求,并被成功处理,接受该请求 |
处理成功 |
300~399 |
要完成该请求需要更进一步的操作 |
重定向 |
400~499 |
消息语法错误,服务器不能处理该请求 |
客户端出错 |
500~599 |
由于UAS/Server的原因,无法处理该请求 |
服务器出错 |
600~699 |
该请求在任何UAS/Server上都不能完成 |
全局错误 |
在完整的SIP系统中,所有的SIP终端作为User Agent都应该向注册服务器登记注册,以告知其位置、会话能力、呼叫策略等信息。
通常,SIP终端开机启动或者配置管理员执行注册操作时,就向注册服务器发送注册请求消息(REGISTER),该消息中携带了所有需要登记的信息。注册服务器收到注册请求消息后向终端发送回应消息,以告知其请求消息已收到。如果注册成功,就再向终端发送“200 OK”消息。如图1-1所示。
图1-1 UA向Registrar注册的消息交互
SIP协议采用Client/Server模型,主要通过UA与代理服务器之间的通信来完成用户呼叫的建立过程。
图1-2 UA通过Proxy Server建立呼叫
如图1-2所示,Telephone A需要呼叫电话Telephone B,两台路由器作为SIP终端(UA)。当Telephone A拨完电话Telephone B的号码后,Router A向Proxy Server发送会话请求消息。Proxy Server通过查找Telephone B的号码所对应的信息,向Router B发送会话请求消息。Router B收到请求后,如果Telephone B可用,就向Proxy Server发送应答,并使Telephone B振铃。Proxy Server收到应答后,向Router A发送应答消息。这里所说的应答包括:两个临时应答(100 Trying 和180 Ringing)和一个成功应答(200 OK)。整个过程中的消息交互如图1-3所示。
图1-3 UA通过Proxy Server建立呼叫的流程图
这个例子是一种简单的应用,只使用了一个代理服务器。在复杂的应用中,可以有多个代理服务器,以及注册服务器。
SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端会重新直接向被叫终端发送会话请求消息。被叫终端也将直接向主叫终端发送应答消息。呼叫过程的消息交互如图1-4所示。
图1-4 UA重定向呼叫流程图
这是比较常见的一种应用。从原理上来说,重定向服务器也可以向主叫终端回复一个代理服务器的地址,接下来的呼叫过程就和使用代理服务器的呼叫过程一样。
SIP是一个应用层的会话协议,与一般协议不同的是,SIP协议可以同时支持各种传输协议:
· SIP支持UDP传输:UDP是一个无连接的协议,且不提供可靠性。在UDP上建立SIP连接存在不可靠性。
· SIP支持TCP传输:增加了SIP报文和语音传输的可靠性,通过TCP协议自身的特点为基于SIP的VoIP通信提供了面向连接和可靠的传输。SIP使用TCP传输协议后,SIP协议可以不需要考虑报文丢失和重传问题。
· SIP支持TLS(Transport Layer Security,传输层安全)传输:SIP支持TCP传输仅仅保证了SIP报文和语音传输的可靠性,而SIP支持TLS传输则保证了SIP报文传输的安全性,具体内容请参见“1.3.1 信令加密”。
以上三种传输协议各具特点,用户可以根据实际的应用环境采用不同的传输协议,目前不支持呼叫中切换传输协议。
TLS本身运行于TCP之上,并且提供了通信双方身份识别和加密SIP报文的一整套安全方案,为应用层协议服务。建立TLS连接时需要认证双方用户的身份,因此用户双方必须有各自合法的数字证书,只有通过认证的用户才可以进行后续的通信。使用TLS传输SIP报文,SIP报文在整个传输过程全部被加密,这样能够最大程度地保护用户数据不被他人非法窃取,提高了语音通信的安全性。
关于信令加密的配置请参见“1.13.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报文的有效负载进行加密,实现对RTP/RTCP报文的加密、认证以及报文重传保护。关于媒体流加密的配置请参见“1.13.2 配置SIP呼叫使用的媒体流协议”。
采用SRTP加密媒体流,首先需要协商加密信息,目前仅支持在SDP(Session Description Protocol,会话描述协议)中通过crypto头域进行加密协商。发起方将本端支持的加密属性信息发送给接收方进行协商,协商成功后,接收方返回相应的加密属性信息。会话建立后,双方各自使用自己的密钥加密RTP/RTCP报文,使用对端的密钥解密对方发送的RTP/RTCP报文。
SDP协商主要包括以下参数信息:
表1-2 加密属性参数
参数名称 |
参数含义 |
说明 |
Tag |
加密属性信息标识符,在不同的加密属性行中的Tag值必须不同,接收方根据Tag值来决定使用哪一组加密属性 |
必选协商参数 |
Crypto-Suite |
加密套件,定义加密和认证使用的算法。目前只支持AES_CM_128_HMAC_SHA1_80和AES_CM_128_HMAC_SHA1_32两种套件 |
必选协商参数 |
Key Parameters |
密钥参数定义密钥信息,主要包括密钥生成方法和密钥值 |
必选协商参数 |
Session Parameters |
会话信息定义了与该会话相关的参数,如密钥衍生率、UNENCRYPTED_SRTP、UNENCRYPTED_SRTCP、UNAUTHENTICATED_SRTP、FEC等 |
可选协商参数,暂不支持 |
使用SRTP协议加密RTP/RTCP报文时,如果使能加密引擎,则使用加密引擎进行报文加密和认证处理,若未使能加密引擎,则使用CPU进行报文加密和认证处理。有关加密引擎的详细介绍,请参见“安全配置指导”中的“IPsec配置”。
目前设备仅支持SIP呼叫使用SRTP协议,SIP Trunk不支持SRTP协议。
TLS可以保护通话中的控制信令,防止用户信息被窃取。SRTP协议可以对语音媒体流进行加密和认证等保护措施。两者可以单独使用,也可以同时使用,表1-3列举了四种组合方式。
信令是否使用TLS |
媒体是否使用SRTP |
描述 |
是 |
是 |
信令报文是安全的,用户的个人信息能够得到有效保护 媒体报文是安全的,用户的通话内容能够得到有效保护 推荐使用 |
否 |
是 |
信令报文是不安全的,用户的个人信息无法得到有效保护 媒体报文是安全的,用户的通话内容能够得到有效保护 |
是 |
否 |
信令报文是安全的,用户的个人信息能够得到有效保护 媒体报文是不安全的,用户的通话内容无法得到有效保护 |
否 |
否 |
信令报文是不安全的,用户的个人信息无法得到有效保护 媒体报文是不安全的,用户的通话内容无法得到有效保护 |
如图1-5所示,使用QSIG信令的ISDN网络发起呼叫,跨越SIP网络到达另一侧使用QSIG的ISDN网络,在此应用中,连接ISDN网络和SIP网络的接口网关设备充当了对QSIG信令和SIP信令的互相转换的功能。目前的此类网关设备大多只能对基本呼叫信令进行转换,对于大量的补充业务所涉及到的业务相关QSIG信令消息无法完全进行QSIG和SIP信令间的互相映射,这些都需要使用一种在SIP消息体中封装携带原始的QSIG信令内容的方法和新的流程,这种在SIP消息中以类似隧道的方式传输ISDN信令的方法称为SIP-T协议。
图1-5 SIP承载QSIG信令消息呼叫流程图
SIP-T协议的核心就是对ISDN消息进行封装及解封装。以上图为例,Router A与Router B之间运行SIP协议,SIP网络连接两端ISDN网络。对于两端ISDN网络之间的呼叫,发送端的QSIG信息最终将由入口网关处理,封装到SIP报文中后再发送给出口网关。接收到SIP报文后,出口网关重新提取在SIP请求中封装的QSIG信令发送到接收端ISDN侧。
和简单的对QSIG信令和SIP信令消息进行映射相比,SIP-T协议增强了ISDN信令内容的完整性和丰富性,使一端发送的ISDN信令信息可以无损传输到跨SIP网络的ISDN另一侧。
目前,设备仅支持在SIP消息中携带QSIG信令。
SIP-T支持QSIG基本呼叫的具体配置请参见“语音配置指导”中的“数字语音用户线”。
SIP支持L3VPN特性通过在PE设备上查找指定VPN实例对应的IP地址和路由信息,实现SIP语音服务正常进行,包括呼叫、注册和消息等待指示功能等。
在如图1-6所示的L3VPN网络中,CE与PE之间交换VPN路由信息,PE与PE之间内部的互通、能够交换VPN路由信息。CE 1、CE 2属于名为Voice的VPN,CE 3、CE 4属于名为Data的VPN,不同的VPN之间不能互相访问。通过在PE 1上配置语音VPN-Voice,PE 1上的Telephone 3可以通过SIP协议与CE 1、CE 2中的Telephone 1和Telephone 2正常使用SIP语音服务。
图1-6 SIP支持L3VPN组网图
表1-4 SIP配置任务简介
配置任务 |
说明 |
详细配置 |
||
配置SIP UA注册 |
配置SIP鉴权信息 |
可选 |
||
配置SIP UA使用的注册服务器信息 |
必选 |
|||
配置SIP UA使用的代理服务器信息 |
可选 |
|||
配置注册相关的时间参数 |
可选 |
|||
配置呼叫失败触发重新注册 |
可选 |
|||
配置电话号码模糊注册功能 |
可选 |
|||
使能SIP注册 |
必选 |
|||
配置SIP服务器的保活备份功能 |
可选 |
|||
配置SIP选路方式 |
必选 |
|||
配置用户身份 |
可选 |
|||
配置SIP UA使用的外出代理服务器信息 |
可选 |
|||
配置SIP的传输协议 |
使用TCP传输协议时,该配置任务为必选 |
|||
配置SIP安全 |
配置SIP呼叫使用TLS传输协议 |
在不安全的网络环境中,可以根据实际需要进行配置。可以选择其中的一种,也可以同时选择三者。推荐同时配置 |
||
配置SIP呼叫使用的媒体流协议 |
||||
配置SIP可信节点 |
||||
配置SIP URL方案 |
可选 |
|||
配置SIP扩展特性 |
SIP支持严格路由穿越 |
设备默认启用的特性,不需要配置 |
||
配置DTMF码的传输方式 |
可选 |
|||
配置SIP支持源地址绑定 |
可选 |
|||
配置SIP UA的域名 |
可选 |
|||
配置SIP兼容性 |
可选 |
|||
配置User-agent和Server头域 |
可选 |
|||
配置微软模式 |
可选 |
|||
配置SIP主叫号码隐藏 |
可选 |
|||
配置映射呼叫释放原因值 |
可选 |
|||
配置SIP会话定期更新 |
可选 |
|||
配置早期媒体协商 |
可选 |
|||
UA的主要工作有两种:一是注册,二是发起或响应会话请求。
注册是UA通过向注册服务器发送注册请求,将UA的相关信息(如地址信息,路由信息,号码信息等)提供给注册服务器。当其它UA要通过代理服务器呼叫本UA时,代理服务器会向注册服务器查询本UA的注册信息。
发起和响应会话请求是UA作为主叫和被叫的基本功能。例如,作为UA的路由器,当用户拨完被叫电话号码时,就会向被叫UA发送会话请求消息。该消息可能直接发送给被叫UA,也可能通过代理服务器发送。
已经完成服务器的配置。
需要SIP鉴权信息有以下两种情况:
· 当UA使用服务器时,且服务器需要提供鉴权时,才需要设置SIP鉴权信息。
· 在SIP消息的交互过程中,当对端SIP设备有可能要求对本端设备进行鉴权时,需要本端设备提供SIP鉴权信息。
如果在POTS语音实体视图下通过user命令配置了鉴权信息,则该实体下的电话号码进行注册需要鉴权信息时选择该实体视图下配置的鉴权信息,否则选择SIP客户端视图下配置的鉴权信息。
· 如果SIP UA上配置了realm,必须保证和服务器上配置的realm相同,否则会因为不匹配导致SIP UA不进行鉴权注册。如果SIP UA上没有配置realm,则SIP UA不进行realm的匹配判断,认为服务器上的realm是可信的。
· 如果需要在POTS/IVR语音实体下配置鉴权信息,建议对应相同电话号码的POTS/IVR语音实体配置相同的鉴权信息。
· 在鉴权注册的情况下,使能注册后,不要随意修改user命令,此种操作可能会造成更新注册失败。
表1-5 配置全局SIP鉴权信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置全局SIP鉴权信息 |
user username password { cipher | simple } password [ cnonce cnonce | realm realm ] * |
可选 缺省情况下,没有SIP鉴权信息 |
表1-6 配置POTS/IVR语音实体的SIP鉴权信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入语音实体视图 |
entity entity-number { ivr | pots } |
- |
配置POTS/IVR语音实体的SIP鉴权信息 |
user username password { cipher | simple } password [ cnonce cnonce | realm realm ] * |
可选 缺省情况下,没有SIP鉴权信息 |
表1-7 配置SIP UA使用的注册服务器信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA使用的注册服务器信息 |
registrar { dns domain-name | ipv4 ip-address } [ port port-number ] [ expires seconds ] [ tcp | tls ] [ scheme { sip | sips } ] [ slave ] |
必选 缺省情况下,没有配置SIP UA使用的注册服务器信息 注册服务器的地址采用域名形式时,设备会根据配置情况选择相应的DNS查询方式。具体请参见“1.9.4 配置SIP选路方式(方式三:配置目的方的域名)” |
· 使用registrar命令配置传输协议类型前,必须在listen transport命令中完成相应传输协议的配置,否则设备无法发起注册请求。
· 如果配置使用TLS传输协议,需要通过crypto命令配置了客户端的SSL策略名称,否则无法发起注册请求。
· 该命令必须在未启动注册功能的情况下执行。
表1-8 配置SIP UA使用的代理服务器信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA使用的代理服务器信息 |
proxy { dns domain-name | ipv4 ip-address } [ port port-number ] |
必选 缺省情况下,没有配置SIP UA使用的代理服务器信息 代理服务器的地址采用域名形式时,设备会根据配置情况选择相应的DNS查询方式。具体请参见“1.9.4 配置SIP选路方式(方式三:配置目的方的域名)” |
注册相关的时间参数对SIP Trunk账户同样生效,关于SIP Trunk账户的详细内容请参见“3.5 配置SIP Trunk账户”。
语音实体或SIP Trunk账户在SIP服务器上注册成功后,SIP服务器在一定时间后会将这些注册信息老化,这个老化时间就是注册老化时长。
为了确保语音实体或SIP Trunk账户在SIP服务器上注册信息的有效性,语音实体或SIP Trunk账户应该在注册老化时长超时之前重新向SIP服务器发起注册,这个重新发起注册的时间由timer registration divider或timer registration threshold命令决定。重新注册时间的两种计算方法如下:
· 使用timer registration divider命令配置注册老化时长的百分比,在“注册老化时长 × 注册老化时长的百分比”超时后,语音实体或SIP Trunk账户重新向SIP服务器发起注册。
· 使用timer registration threshold命令配置注册老化时长的提前量,在“注册老化时长 - 注册老化时长的提前量”超时后,语音实体或SIP Trunk账户重新向SIP服务器发起注册。
两者可以同时配置,但实际的重新注册时间会采用两个时长中较小的一个值,即从语音实体或SIP Trunk账户注册成功开始,在经过两者中的较小时间后,会重新向SIP服务器发起注册。
表1-9 配置注册相关的时间参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置注册失败后,发起下一轮注册的间隔时间 |
timer registration retry seconds |
可选 缺省情况下,注册失败后,发起下一轮注册的间隔时间为240秒 |
配置注册老化时长 |
timer registration expires seconds |
可选 缺省情况下,注册老化时长为3600秒 如果在registrar或registrar server-group命令中配置了expires参数,则注册老化时长由该参数值决定,否则注册老化时长的值由timer registration expires命令决定。proxy命令不包含expires参数,所以语音实体向proxy命令指定的SIP服务器发起注册时,注册老化时长只能由timer registration expires命令决定 |
配置注册老化时长的百分比 |
timer registration divider percentage |
可选 缺省情况下,注册老化时长的百分比为80 |
配置注册老化时长的提前量 |
timer registration threshold seconds |
可选 缺省情况下,注册老化时长的提前量为0秒 |
呼叫失败触发重新注册功能是指当服务器发生故障时,如果此时设备向服务器发起请求,服务器会向设备回复响应5XX(502、504、505和513除外)、403、408,设备上的号码会重新向服务器发起注册。该功能保证服务器在异常重启后能够第一时间重新记录号码的注册信息。
表1-10 配置呼叫失败触发重新注册
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置呼叫失败触发重新注册功能 |
call-fallback register |
可选 缺省情况下,呼叫失败触发重新注册功能处于关闭状态 |
电话号码模糊注册功能是指为了使用方便,在语音实体下配置被叫号码模板(命令match-template)时往往使用通配符(包括“.”、“T”模式),而不是标准E.164号码格式。
启用电话号码模糊注册功能后,在语音网关发送的REGISTER报文中,支持用户在配置POTS语音实体的被叫号码模板时使用通配符,通配符包括“.”和“T”。在发送REGISTER报文之前,路由器对通配符“.”进行保留,并将通配符“T”转换为“*”。
表1-11 配置电话号码模糊注册功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
启用电话号码模糊注册功能 |
wildcard-register enable |
必选 缺省情况下,禁用电话号码模糊注册功能 |
电话号码模糊注册功能需要注册服务器及位置服务器的支持。
表1-12 使能SIP注册功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
使能SIP注册功能 |
register-enable on |
必选 缺省情况下,SIP注册功能处于关闭 |
配置检查POTS语音实体下语音用户线的状态 |
line-check enable |
可选 缺省情况下,在注册POTS语音实体下的号码时,需要检查与POTS语音实体绑定的语音用户线状态,只有配置语音用户线并且语音用户线处于Up状态时,设备才能为号码发起注册请求 |
SIP服务器保活功能用来探测SIP服务器是否可用,包含两种保活模式:
· OPTIONS保活模式:设备通过定期发送OPTIONS报文的方式进行保活探测,如果设备收到SIP服务器对OPTIONS报文的应答报文为408/5XX(502、504、505、513除外),则认为SIP服务器不可达。
· REGISTER保活模式:注册用的REGISTER报文同时具有对SIP服务器探测的作用,如果设备收到SIP服务器对REGISTER报文的应答报文为408/5XX(502、504、505、513除外),则认为SIP服务器不可达。
在SIP客户端视图可以配置两种备份模式:
· parking备份模式:设备向当前服务器发送OPTIONS或REGISTER保活报文,当前服务器不可用时,设备会选择备份服务器作为当前服务器。即使原先的服务器恢复正常工作,设备也不会切换服务器。选用parking模式时,需要事先使用keepalive命令开启OPTIONS或REGISTER保活模式。
· homing备份模式:设备同时向当前服务器以及最高优先级服务器发送OPTIONS保活报文。当前服务器不可用时,设备会选择备份服务器作为当前服务器。一旦最高优先级服务器可用,设备立刻选择其为当前服务器。选用homing模式时,需要事先使用keepalive命令将保活模式设置为OPTIONS模式。
表1-13 配置SIP服务器的保活功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP服务器的保活功能 |
keepalive { options [ interval seconds ] | register } |
必选 缺省情况下,使用register保活模式 |
配置SIP服务器组的备份模式 |
redundancy mode { homing | parking } |
可选 缺省情况下,备份模式采用parking模式 |
SIP选路方式分为四种:
· 直接使用IP地址。直接配置目的方的IP地址和端口号。
· 使用语音代理服务器。组网环境中具有SIP代理服务器,可以采用SIP代理服务器完成SIP消息的交互。
· 采用域名作为目的地址。采用域名的配置使得客户端不需要关心目的方的具体地址,只需要知道目的方在网络中的唯一域名,通过和域名服务器配合,即可实现和目的方的通信。
· 采用ENUM(Telephone Number Mapping,电话号码映射)方式。ENUM定义了将E.164 号码映射为域名的规则,每个由E.164 号码转化而成的域名可以对应一系列的统一资源标识,从而使国际统一的E.164电话号码成为可以网络中使用的网络地址资源。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-14 配置SIP选路方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置目的方IP地址 |
address sip ip ip-address [ port port-number ] |
必选 缺省情况下,没有配置选路方式 |
有关DNS的详细介绍,请参见“三层技术-IP业务配置指导”中的“域名解析”。
表1-15 配置SIP选路方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置语音代理服务器 |
address sip proxy |
必选 缺省情况下,没有配置选路方式 |
目的方地址采用域名形式时,设备会根据配置情况选择相应的DNS查询方式。
· Type-A方式:使用dns-type命令配置DNS查询方式为a-record,或者同时配置了目的地址的域名和端口号,那么设备会使用A类查询方式来获取目的IP地址信息。
· SRV方式:在配置目的地址的域名,且没有配置端口号的情况下,需要使用dns-type命令配置DNS查询方式为SRV,那么设备会使用SRV查询方式获取目的IP地址信息。
表1-16 配置SIP选路方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置DNS查询方式 |
dns-type { a-record | srv } |
可选 缺省情况下,使用a-record方式进行DNS查询 需要注意的是,如果使用address sip { dns domain-name [ port port-number ] | enum-group group-number }、proxy dns domain-name [ port port-number ]、mwi-server dns domain-name [ port port-number ]命令指定了端口号,那么设备只能采用Type-A方式进行DNS查询 |
退出SIP视图 |
quit |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置目的方的域名 |
address sip dns domain-name [ port port-number ] |
必选 缺省情况下,没有配置选路方式 |
有关DNS的详细介绍,请参见“三层技术-IP业务配置指导”中的“域名解析”。
用户拨号后,设备会根据ENUM号码变换规则的优先级选取匹配的变换规则进行号码变换,变换后的号码转换为ENUM方式向域名服务器发起域名查询。
表1-17 配置SIP选路方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入ENMU变换规则组视图 |
enum-group group-number |
- |
配置ENUM号码变换规则 |
rule tag preference value match-pattern replacement-rule domain-name |
必选 缺省情况下,没有配置ENUM号码变换规则 |
退出语音拨号策略视图 |
quit |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置ENUM方式的呼叫选路方式 |
address sip enum-group group-number |
必选 缺省情况下,没有配置选路方式 |
接入运营商网络时,用户需要使用uri命令配置运营商提供的用户名称来标识身份。
表1-18 配置用户身份
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入语音实体视图 |
entity entity-number pots |
- |
配置用户身份 |
uri user-info [ domain domain-name ] |
可选 缺省情况下,使用“号码@SIP设备的域名或接口IP地址”的格式发送请求报文 |
外出代理服务器是一个处于内外网间的SIP代理服务器。内网SIP UA直接把所有请求发送到外出代理服务器,通过外出代理服务器联系外网的注册与代理服务器。外出代理服务器在向外网发送SIP消息时,会根据请求报文中的Request-Line头域将内网的SIP消息路由到外网。
表1-19 配置SIP UA使用的外出代理服务器信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA使用的外出代理服务器信息 |
outbound-proxy { dns domain-name | ipv4 ip-address } [ port port-number ] |
必选 缺省情况下,没有配置SIP UA使用的代理服务器信息 |
SIP客户端视图下的transport命令表示的是全局采用的传输协议类型,如果用户需要针对某一个呼叫采用其他的传输协议时,可以在对应的VoIP语音实体视图下配置相应的传输协议类型。当VoIP语音实体视图下配置的传输协议类型与SIP客户端视图下的transport命令配置的传输协议类型不一致时,则使用该VoIP语音实体下的配置,即VoIP语音实体配置优先于全局配置。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-20 配置发起SIP呼叫使用UDP/TCP传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置发起SIP呼叫使用的全局传输协议 |
transport { tcp | udp } |
必选 缺省情况下,使用UDP传输协议 |
表1-21 配置VoIP语音实体发起SIP呼叫使用UDP/TCP传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置发起SIP呼叫使用UDP/TCP传输协议 |
transport { tcp | udp } |
必选 缺省情况下,全局传输协议类型为UDP协议。VoIP语音实体下没有缺省传输协议类型。如果该语音实体下没有配置传输协议,那么该VoIP语音实体的缺省情况与全局传输协议相同 当语音实体是SIP类型的VoIP语音实体时,该命令才能生效 |
发送方和接收方必须同时配置相同的传输协议类型,如在发送方配置transport tcp,那么在接收方需要配置listen transport tcp。
表1-22 配置TCP连接的老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置TCP连接的老化时间 |
timer connection age tcp tcp-age-time |
可选 缺省情况下,TCP连接的老化时间为5分钟 |
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-23 配置接收SIP呼叫时使用UDP/TCP传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置接收SIP呼叫时使用UDP/TCP传输协议 |
listen transport { tcp | udp } |
可选 缺省情况下,同时开启UDP和TCP传输协议侦听端口 |
· 如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
· 设备上已经完成SSL(Secure Sockets Layer,安全套接字层)策略的配置。为保证设备上已申请的证书可用,请确保设备当前系统时间处于证书的有效期范围之内。
表1-24 配置TLS传输时使用的SSL策略名称
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置客户端的策略名称 |
crypto ssl-client-policy client-policy-name |
必选 缺省情况下,没有配置客户端使用的策略名称 |
配置服务器端的策略名称 |
crypto ssl-server-policy server-policy-name |
必选 缺省情况下,没有配置服务器端使用的策略名称 |
SSL策略的配置方法请参见“安全配置指导”中的“PKI”和“SSL”。
表1-25 配置全局发起SIP呼叫使用TLS传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置全局发起SIP呼叫使用TLS传输协议 |
transport tls |
必选 缺省情况下,使用UDP传输协议 |
表1-26 配置VoIP语音实体发起SIP呼叫使用TLS传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体发起SIP呼叫使用TLS传输协议 |
transport tls |
必选 缺省情况下,全局传输协议类型为UDP协议。VoIP语音实体下没有缺省传输协议类型。如果该语音实体下没有配置传输协议,那么该VoIP语音实体的缺省情况与全局传输协议相同 当语音实体是SIP类型的VoIP语音实体时,该命令才能生效 |
· 发送方和接收方必须同时配置相同的传输协议类型,如在发送方处配置transport tls,那么在接收方需要配置listen transport tls。
· 使用TLS传输协议进行呼叫时,VoIP语音实体的缺省端口号为5061。相关命令请参见“语音命令参考/SIP”中的命令address sip。
表1-27 配置接收SIP呼叫时使用TLS传输协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置接收SIP呼叫时使用TLS传输协议 |
listen transport tls |
必选 缺省情况下,不开启TLS协议侦听端口 |
表1-28 配置TLS连接的老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置TLS连接的老化时间 |
timer connection age tls tls-age-time |
可选 缺省情况下,TLS连接的老化时间为30分钟 |
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-29 配置SIP呼叫使用的媒体流协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP呼叫使用的媒体流协议 |
media-protocol { rtp | srtp } * |
可选 缺省情况下,SIP呼叫使用RTP协议 需要注意的是,如果同时配置RTP和SRTP协议,设备作为呼叫发起方,在发起呼叫时会携带两种媒体流协议,供接收方选择。设备作为呼叫接收方,会优先使用SRTP协议进行媒体流协商,如协商失败,则使用RTP协议 |
表1-30 配置SIP可信节点
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP可信节点 |
trusted-point ipv4 ipv4-address |
可选 缺省情况下,没有配置可信节点 |
SIP协议中的URL(Uniform Resource Locator,统一资源定位符)表示的是统一资源定位信息,目前设备可以支持SIP和SIPS(SIP secure,安全SIP)两种方案。当用户希望SIP信令交互能够得到安全保证,可以配置SIPS方案,达到避免信息泄露的目的。
通过配置可以指定呼叫采用的URL方案类别。SIP客户端视图下的url命令为全局命令,当VoIP语音实体下配置了URL类型时,则使用VoIP语音实体配置,否则使用该命令配置的URL类型,即VoIP语音实体配置优先于全局配置。
· 如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
· 只有传输协议为TLS时才能使用SIPS的URL方案。配置SIPS URL方案前,请完成SIP使用TLS传输方式进行呼叫的配置。
表1-31 配置发起呼叫采用的URL方案
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置全局URL方案 |
url { sip | sips } |
可选 缺省情况下,采用SIP的URL方案 只有传输协议为TLS时才能使用SIPS的URL方案 |
表1-32 配置VoIP语音实体采用的SIP URL方案
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体的URL方案 |
url { sip | sips } |
可选 缺省情况下,没有配置VoIP语音实体的URL方案 当语音实体是SIP类型的VoIP语音实体时,该命令才能生效 只有传输协议为TLS时才能使用SIPS的URL方案 |
SIP支持严格路由穿越:在一些复杂的网络环境中,当SIP UAC和SIP UAS之间的请求消息需要通过多个Proxy Server,SIP协议通过Route和Record-Route头域保证后续的请求消息都需要通过这些Proxy Server,SIP严格路由穿越是设备默认启用的特性,不需要配置。
主被叫用户通话过程中,DTMF(Dual Tone Multi-Frequency,双音多频)码可以采用两种方式在主被叫之间透明传输:带内方式、带外方式。带内方式是指DTMF码封装在RTP语音包中进行传送;带外方式则是指DTMF码封装在SIP消息中传送。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
如果要实现DTMF码双向带外传输功能,需要在主叫UA的VoIP语音实体中进行配置,同时还需要在被叫UA的POTS语音实体中进行配置。具体配置举例可以参考1.18.4 SIP带外方式传输DTMF码配置举例。
表1-33 配置DTMF码的传输方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入语音实体视图 |
entity entity-number { pots | voip } |
- |
配置采用SIP带外方式传输DTMF码 |
outband sip |
必选 缺省情况下,采用带内方式传输DTMF码 |
SIP支持源地址绑定功能是指在使用SIP协议进行语音呼叫时,用户可以通过命令行配置指定发出的信令流或媒体流的源地址。SIP支持源地址绑定通过绑定静态IP地址或某一类型接口上的主地址完成。
· 静态IP地址绑定:指定SIP呼叫中的源地址为绑定的静态地址。
· 源地址接口绑定:在大型组网中,设备接口上的IP地址一般由DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器或PPPoE(Point-to-Point Protocol over Ethernet,点对点以太网承载协议)服务器分配,为了能够适应此类组网,可以使用源地址绑定技术把SIP协议的信令流和媒体流的源地址绑定到某一接口上,该接口上的地址可以通过DHCP或PPPoE服务器动态分配,这种动态方式避免了静态IP地址绑定导致地址变换时需要手工更新的缺点,方便了网络管理。
目前支持SIP支持源地址绑定的接口类型有三层Ethernet、GigabitEthernet和Dialer接口。
· 关于DHCP功能的介绍和配置,请参见“三层技术-IP业务配置指导”中的“DHCP”。
· 关于PPPoE功能的介绍和配置,请参见“二层技术-广域网接入配置指导”中的“PPPoE”
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-34 配置SIP支持源地址绑定
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP支持源地址绑定 |
source-bind { media | signal } { interface-type interface-number | ipv4 ip-address } |
必选 缺省情况下,没有配置SIP源地址绑定 |
表1-35 配置SIP支持源地址绑定命令的生效情况
状态 |
生效情况 |
在通话过程中 |
配置source-bind · 媒体流源地址不会随之动态更新,在下一次创建新的会话时该绑定才会在相应的媒体流上生效。 · 对于信令流,绑定成功将立即生效,无论当前是否有SIP会话。 |
绑定的接口或静态IP地址对应的接口shutdown |
源地址绑定功能失效,信令流或媒体流的发送恢复为自适应方式;当恢复为up后,绑定功能恢复正常使用 |
绑定的静态地址被删除、修改或绑定的接口被删除 |
相关联的绑定配置也将被删除 |
绑定的热插拨接口被拨出 |
相关联的绑定配置也将被取消,当下次该接口被插入后,绑定配置将同步恢复 |
相关接口对应的物理层或链路层状态为down |
配置绑定后,绑定参数不会生效,此时的报文发送方式仍为缺省的自适应方式,即报文发送方式恢复为自动从IP层获取地址 |
使用的DHCP租约期已过,从DHCP服务器动态获得了新的IP地址时 |
配置接口绑定,则会使用最新的接口主地址作为源地址 |
使能SIP注册功能 |
配置信令流的源地址绑定,后续发送的注册更新报文将使用最新绑定的信令流的地址发起注册 |
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
使用sip-domain命令可以配置SIP UA的域名,完成配置后,from头域就会携带域名形式的地址。
表1-36 配置SIP UA的域名
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA的域名 |
sip-domain domain-name |
必选 缺省情况下,未配置SIP UA的域名 |
某些厂商的设备可能没有严格按照SIP协议标准实现,在与这些厂商设备互通时,可以通过调节下列选项,满足用户的组网需求。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-37 配置号码/地址的选取方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置号码的选取方式(从To头域中选取目的号码) |
sip-comp callee |
必选 缺省情况下,从Request-Line中选取目的号码(Request-Line是SIP请求消息的起始行,Request-Line中包含目的号码) |
配置地址的选取方式(From头域使用To头域中的地址) |
sip-comp from |
必选 缺省情况下,From头域中包含请求方地址,To头域包含目的方地址 |
某些厂商的设备不能识别号码中的“#”号,在与这些厂商设备互通时,可以配置号码转换命令。
表1-38 配置号码转换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置号码转换 |
sip-comp substitute |
必选 不对被叫号码中的“#”和ASCII码“%23”进行转换 |
与其他厂商设备互通时,可以通过调节下列选项,满足用户的组网需求。配置x-param兼容选项后:
· 设备如果接收到a=X-modem的re-INVITE请求,需要在回复的200 OK应答报文的SDP里携带a=X-modem;
· 设备如果接收到a=X-fax的re-INVITE请求,在回复的200消息里面携带a=X-fax;
· 当设备发起传真透传时,发送的re-INVITE会携带a=X-fax字段;当设备发起modem透传时,发送的re-INVITE会携带a=X-modem字段。
配置t38兼容选项后,能识别特有的T.38描述字段,发送的re-INVITE和对re-INVITE的200 OK应答报文的SDP中,对于T38FaxTranscodingJBIG、T38FaxTranscodingMMR、T38FaxFillBitRemoval传真参数均不包含“:0”。
缺省情况下,设备在发re-INVITE请求时不主动携带这些兼容选项字段。只有在配置兼容选项命令后,设备发出的re-INVITE请求才会携带兼容选项。
表1-39 配置SIP传真及Modem透传兼容性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP传真及Modem透传兼容性 |
sip-comp { t38 | x-parameter } * |
必选 缺省情况下,设备在发re-INVITE请求时不主动携带这些兼容选项字段 |
在设备与VCX互通时,根据VCX设备的License控制机制,在注册或取消注册时,需要在SIP注册报文的Contact头域中携带dt参数。
表1-40 配置与VCX互通的参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置在注册或取消注册时,SIP注册报文中的Contact头域中携带dt参数 |
sip-comp dt |
必选 缺省情况下,在注册或取消注册时,SIP注册报文的Contact头域中不携带dt参数 |
User-agent头域可以在SIP请求报文中带有UAC端产品名称和UAC端产品版本号,Server头域可以在SIP响应报文中带有UAS端产品名称和UAS端产品版本号。UA使用的版本可能会因为安全漏洞导致UA遭受攻击,所以RFC 3261规定应该根据实际情况配置User-Agent和Server头域标识UA版本号。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-41 配置User-agent和Server头域
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP请求报文中的User-agent头域 |
sip-comp agent product-name product-version |
必选 缺省情况下,没有配置SIP请求报文中的User-agent头域 |
配置SIP响应报文中的Server头域 |
sip-comp server product-name product-version |
必选 缺省情况下,没有配置SIP响应报文中的Server头域 |
与微软产品互通时,请配置成微软模式。
表1-42 配置微软模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置微软模式 |
sip-comp ms |
必选 缺省情况下,没有启用微软模式 |
主叫PSTN侧用户发起的呼叫有隐藏主叫号码需求,可以通过配置SIP扩展头域决定此呼叫在经过SIP网络后向被叫PSTN侧用户隐藏主叫号码。同时,可以把ISDN网络用户的主被叫号码信息从主叫PSTN侧经过SIP网络后透传到被叫PSTN侧。
主叫号码隐藏可以通过添加P-Preferred-Identity头域、P-Asserted-Identity头域或Remote-Party-ID头域实现。
· 配置添加P-Preferred-Identity头域或P-Asserted-Identity头域:配置两者中的任意一个头域后,就会同时出现Privacy头域。如果Privacy头域中出现“Privacy:none”,表示显示主叫号码;如果Privacy头域中出现“Privacy:id”,表示隐藏主叫号码。
· 配置添加Remote-Party-ID头域:如果该头域中出现“privacy=off”,表示显示主叫号码;如果该头域中出现“privacy=full”,表示隐藏主叫号码。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-43 配置SIP主叫号码隐藏
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
添加P-Asserted-Identity头域或P-Preferred-Identity头域 |
privacy { asserted | preferred } |
可选 缺省情况下,没有添加P-Preferred-Identity头域或P-Asserted-Identity头域 |
添加Remote-Party-ID头域 |
remote-party-id |
可选 缺省情况下,没有添加Remote-Party-ID头域 |
Remote-Party-ID头域可以和P-Preferred-Identity头域或P-Asserted-Identity头域同时使用。当这两个头域同时存在时,Remote-Party-ID头域优先级高于P-Preferred-Identity或P-Asserted-Identity头域。
已经配置SIP服务器。
语音呼叫正常拆线或者异常拆线过程中会发送携带呼叫释放原因值的消息。在SIP网络和PSTN网络互通时,SIP状态码和ISDN原因码之间采用默认的映射关系,具体值可以参见“语音命令参考”中的“SIP”。为了适应更复杂的组网应用,也可以通过命令行配置改变这种默认映射关系,实现灵活转换PSTN侧释放原因值和SIP Reason头域原因值的映射。
表1-44 配置映射呼叫释放原因值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置PSTN侧的释放原因值对应的SIP状态码 |
reason-mapping pstn pstn-code sip sip-code |
可选 缺省情况下,PSTN侧的释放原因值和SIP状态码的对应关系请参见“语音命令参考”中的“SIP”。其中PSTN标准释放原因值16对应的是SIP请求消息,而不是状态码,因此不允许对其进行配置 |
配置SIP状态码对应的PSTN侧的释放原因值 |
reason-mapping sip sip-code pstn pstn-code |
可选 缺省情况下,SIP状态码和PSTN侧的释放原因值的对应关系请参见“语音命令参考”中的“SIP” |
在话务繁忙的通信网络中,可能会出现呼叫双方连接已经结束,但由于BYE请求的丢失,而没有通知到Proxy Server,导致Proxy Server认为通话依然存在,仍然保留该过程中保存的连接信息,造成服务器资源的浪费。
为解决该问题,RFC 4028中定义了Session Timer(会话定期更新)机制,通过定期发送作为会话更新的re-INVITE或者UPDATE请求,让Proxy Server获取当前通话状态,而会话更新请求的发送间隔是由更新双方相互协商确定的。
会话定期更新增加了Session-Expires和Min-SE两个头域:
· Session-Expires头域:定义了每个SIP会话老化时间,即在该时间内没有收到更新请求则认为呼叫已经结束。
· Min-SE头域:定义了每个SIP会话更新最短时间间隔,用于防止会话更新请求的频繁发送造成的带宽占用。
如果呼叫通过SIP服务器,需要完成SIP服务器的配置。
表1-45 配置SIP会话定期更新
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP会话定期更新 |
timer session-expires seconds [ minimum min-seconds ] |
可选 缺省情况下: · 不主动启用会话定期更新机制。不主动启用会话定期更新机制是指如果被叫方关闭会话定期更新,而主叫方开启了会话定期更新,那么在呼叫过程中通过协商,被叫也会启用定期更新机制 · 会话最短间隔时间为90秒 |
当设备作为被叫时,可以通过向主叫回复带有媒体信息的183 Session Progress应答进行早期媒体协商(早期媒体协商是指被叫电话摘机之前,被叫就和主叫进行媒体协商,使被叫主动为主叫放音),在这种情况下,主叫听到的回铃音只能是被叫播放的普通回铃音。而在实际的某些应用中,如彩铃业务,需要由服务器来为主叫播放回铃音,在这种情况下,在被叫设备上需要使用undo early-media enable命令取消早期媒体协商,这样被叫会向主叫回复不带有媒体信息的180 Ringing应答,使主叫不再接收被叫播放的普通回铃音,而只接收由服务器播放的彩铃。
表1-46 配置早期媒体协商
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置早期媒体协商 |
early-media enable |
可选 缺省情况下,早期媒体协商功能处于开启状态,设备作为被叫,向主叫回复带有媒体信息的183 Session Progress应答 |
在配置SIP支持L3VPN前,请确保各设备上完成关于L3VPN的配置。
在PE设备上配置SIP支持L3VPN时,需要注意以下配置事项:
· 在没有SIP语音服务(包括SIP语音呼叫、注册、SIP订阅,本地存活服务器等)运行的情况下才能配置该命令。配置后,该命令对所有使用SIP协议的语音服务生效。
· 如果要使用SIP支持源地址绑定功能,为了该功能的正常使用,需要确保使用SIP协议的语音服务绑定的VPN,与源地址绑定命令指定接口下关联的VPN实例应该保持一致。
表1-47 配置SIP支持L3VPN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
配置使用SIP协议的语音服务绑定的VPN |
vpn-instance vpn-instacnce-name |
可选 缺省情况下,没有配置使用SIP协议的语音服务绑定的VPN |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP UA的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除SIP UA的统计信息。
表1-48 SIP UA显示和维护
操作 |
命令 |
查询SIP UA所有的呼叫统计信息 |
display voice sip call-statistics [ | { begin | exclude | include } regular-expression ] |
查询SIP传输层的连接信息 |
display voice sip connection { tcp | tls } [ | { begin | exclude | include } regular-expression ] |
查询SIP UA的注册状态信息 |
display voice sip register-state [ | { begin | exclude | include } regular-expression ] |
查询PSTN侧释放原因值和SIP状态码的映射关系 |
display voice sip reason-mapping { pstn-sip | sip-pstn } [ | { begin | exclude | include } regular-expression ] |
显示ENUM号码变换规则组的配置信息 |
display voice enum-group { all | mark group-number } [ | { begin | exclude | include } regular-expression ] |
显示DNS动态缓存信息 |
display dns host { naptr | srv } [ | { begin | exclude | include } regular-expression ] |
显示SIP的DNS地址查询记录 |
display voice sip dns-record [ | { begin | exclude | include } regular-expression ] |
显示SIP动态连接地址信息 |
display voice sip dynamic-contact-address [ | { begin | exclude | include } regular-expression ] |
清除SIP UA所有的呼叫统计信息 |
reset voice sip statistics |
清除SIP传输层的连接信息 |
reset voice sip connection { tcp | tls } id conn-id |
清除DNS动态缓存信息 |
reset dns host { naptr | srv } |
清除SIP的DNS查询记录 |
reset voice sip dns-record |
两台路由器作为SIP UA,能够互相直接呼叫。
图1-7 SIP UA直接呼叫组网图
假设路由器Router A与Router B之间的路由可达,本例中省略了关于路由方面的配置,请用户根据自己的网络环境进行配置。
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[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
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] quit
[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。
两台路由器作为SIP UA,通过SIP服务器进行SIP呼叫。
· 在Router A上,要求使用全局注册方法,所有号码使用相同的鉴权用户名和密码。鉴权用户名为routerA,密码为1234。
· 在Router B上,号码2222的注册用户名为routerB,密码为1234。
图1-8 SIP UA通过服务器呼叫组网图
· 假设Router A、Router B以及SIP服务器之间的路由可达。本例中省略了关于路由方面的配置,请用户根据自己的网络环境进行配置。
· 由于作为SIP服务器的设备不同,所需进行的配置也不同,此处从略。
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置SIP。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 192.168.2.3
[RouterA-voice-sip] proxy ipv4 192.168.2.3
[RouterA-voice-sip] user routerA password cipher 1234
[RouterA-voice-sip] register-enable on
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
[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
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置SIP。
[RouterB] voice-setup
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 192.168.2.3
[RouterB-voice-sip] proxy ipv4 192.168.2.3
[RouterB-voice-sip] register-enable on
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] user routerB password cipher 1234
[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可以通过代理服务器呼叫电话2222,同理,电话2222可以通过代理服务器呼叫电话1111。
两台路由器作为SIP UA,通过DNS服务器查询目的地址后进行SIP呼叫。
图1-9 SIP UA采用域名作为目的地址呼叫组网图
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
# 配置静态主机名cc.news.com的IP地址为192.168.2.2。
<Sysname> system-view
[Sysname] ip host cc.news.com 192.168.2.2
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2222 voip
[RouterA-voice-dial-entity2222] address sip dns cc.news.com
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] quit
[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。
两台路由器作为SIP UA,要求在呼叫建立之后,通话双方在通话过程中可以使用SIP带外方式传输DTMF码,使DTMF码能够传输更加可靠。
图1-10 SIP带外方式传输DTMF码组网图
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[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] outband sip
[RouterA-voice-dial-entity2222] quit
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] outband sip
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[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
[RouterB-voice-dial-entity1111] outband sip
[RouterB-voice-dial-entity2222] quit
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[RouterB-voice-dial-entity2222] outband sip
呼叫建立之后,通话过程中一方按键,此时DTMF码会通过带外传输到对方,另一方可以在话机里听到较短促的DTMF声。
两台路由器Router A和Router B作为SIP UA,号码为1111的电话拨打号码为2222的电话,要求隐藏主叫号码1111。
图1-11 SIP主叫号码隐藏组网图
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置语音实体。
[RouterA] voice-setup
[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
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
[RouterA-voice-dial] quit
[RouterA-voice] quit
# 在主叫的语音用户线下配置禁止向远端发送主叫号码。
[RouterA] subscriber-line 1/0
[RouterA-subscriber-line1/0] undo cid send
[RouterA-subscriber-line1/0] quit
# 配置P-Asserted-Identity头域。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] privacy asserted
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置语音实体。
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial] entity 1111 voip
[RouterA-voice-dial-entity1111] address sip ip 192.168.2.1
[RouterA-voice-dial-entity1111] match-template 1111
电话1111拨打电话2222时,电话2222上不会显示主叫号码。
两台路由器Router A和Router B作为SIP UA,号码为1111的电话拨打号码为2222的电话,要求使用的传输方式为TCP。
图1-12 SIP呼叫使用TCP传输方式组网图
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置全局发起SIP呼叫使用TCP传输协议。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] transport tcp
[RouterA-voice-sip] quit
# 配置语音实体。
[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
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
[RouterA-voice-dial] quit
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置接收SIP呼叫时使用的传输协议为TCP(此步骤可选,因为在缺省情况下,TCP传输协议侦听端口处于打开状态)。
[RouterB] voice-setup
[RouterB-voice] sip
[RouterB-voice-sip] listen transport tcp
[RouterB-voice-sip] quit
# 配置语音实体。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[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可以查看传输层的连接信息。
两台路由器Router A和Router B作为SIP UA,要求双方通话时使用TLS传输协议。
图1-13 SIP呼叫使用TLS传输方式组网图
· 本配置举例中,CA服务器上采用RSA Keon软件。
· 关于TLS策略名称的具体配置请参见“安全配置指导”中的“SSL”。
为保证设备上已申请的证书可用,请确保设备当前系统时间处于证书的有效期范围之内。
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置PKI实体。
[RouterA] pki entity aaa
[RouterA-pki-entity-aaa] common-name RouterA
[RouterA-pki-entity-aaa] quit
# 配置PKI域。
[RouterA] pki domain voice
[RouterA-pki-domain-voice] ca identifier voice
# 配置注册服务器URL,格式为http://host:port/Issuing Jurisdiction ID。其中的Issuing Jurisdiction ID为CA服务器上生成的16进制字符串。
[RouterA-pki-domain-voice] certificate request url http://192.168.0.88:446/bd0683e5a369eb4edbb4ef502eaca6ec42d24e97
[RouterA-pki-domain-voice] certificate request from ca
[RouterA-pki-domain-voice] certificate request entity aaa
[RouterA-pki-domain-voice] quit
# 生成本地的RSA密钥对。
[RouterA] public-key local create rsa
# 获取CA的证书。
[RouterA] pki retrieval-certificate ca domain voice
# 本地证书申请。
[RouterA] pki request-certificate domain voice
# 配置SSL服务器端策略。
[RouterA] ssl server-policy server
[RouterA-ssl-server-policy-server] pki-domain voice
# 配置SSL客户端策略。
[RouterA] ssl client-policy client
[RouterA-ssl-client-policy-server] pki-domain voice
# 配置SIP。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] crypto ssl-server-policy server
[RouterA-voice-sip] crypto ssl-client-policy client
[RouterA-voice-sip] listen transport tls
[RouterA-voice-sip] transport tls
[RouterA-voice-sip] quit
# 配置语音实体。
[RouterA-voice] dial-program
[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
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
[RouterA-voice-dial] quit
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置PKI实体。
[RouterB] pki entity aaa
[RouterB-pki-entity-aaa] common-name RouterB
[RouterB-pki-entity-aaa] quit
# 配置PKI域。
[RouterB] pki domain voice
[RouterB-pki-domain-voice] ca identifier voice
# 配置注册服务器URL,格式为http://host:port/Issuing Jurisdiction ID。其中的Issuing Jurisdiction ID为CA服务器上生成的16进制字符串。
[RouterB-pki-domain-voice] certificate request url http://192.168.0.88:446/bd0683e5a369eb4edbb4ef502eaca6ec42d24e97
[RouterB-pki-domain-voice] certificate request from ca
[RouterB-pki-domain-voice] certificate request entity aaa
[RouterB-pki-domain-voice] quit
# 生成本地的RSA密钥对。
[RouterB] public-key local create rsa
# 获取CA的证书。
[RouterB] pki retrieval-certificate ca domain voice
# 本地证书申请。
[RouterB] pki request-certificate domain voice
# 配置SSL服务器端策略。
[RouterB] ssl server-policy server
[RouterB-ssl-server-policy-server] pki-domain voice
# 配置SSL客户端策略。
[RouterB] ssl client-policy client
[RouterB-ssl-client-policy-server] pki-domain voice
# 配置SIP。
[RouterB] voice-setup
[RouterB-voice] sip
[RouterB-voice-sip] crypto ssl-server-policy server
[RouterB-voice-sip] crypto ssl-client-policy client
[RouterB-voice-sip] listen transport tls
[RouterB-voice-sip] transport tls
[RouterB-voice-sip] quit
# 配置语音实体。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[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传输方式建立通话,通过display voice sip connection tls可以查看传输层的连接信息。
两台路由器Router A和Router B作为SIP UA,号码为1111的电话拨打号码为2222的电话,要求使用的URL方案为SIPS。
图1-14 SIP呼叫使用SIPS URL方案组网图
· 只有传输协议为TLS时才能使用SIPS的URL方案。请完成SIP使用TLS传输方式进行呼叫的配置,完整的举例请参见“1.18.7 SIP呼叫使用TLS传输方式配置举例”。
· 发起呼叫时,主叫方的TLS监听端口必须打开,否则呼叫无法建立。
· 关于TLS策略名称的具体配置请参见“安全配置指导”中的“SSL”。
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置SIP。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] crypto ssl-server-policy server
[RouterA-voice-sip] crypto ssl-client-policy client
[RouterA-voice-sip] listen transport tls
[RouterA-voice-sip] url sips
[RouterA-voice-sip] transport tls
[RouterA-voice-sip] quit
# 配置语音实体。
[RouterA-voice] dial-program
[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
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] quit
[RouterA-voice-dial] quit
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置SIP。
[RouterB] voice-setup
[RouterB-voice] sip
[RouterB-voice-sip] crypto ssl-server-policy server
[RouterB-voice-sip] crypto ssl-client-policy client
[RouterB-voice-sip] listen transport tls
[RouterB-voice-sip] url sips
[RouterB-voice-sip] transport tls
[RouterB-voice-sip] quit
# 配置语音实体。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[RouterB-voice-dial-entity2222] match-template 2222
[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 111
双方在呼叫过程中使用的URL方案为SIPS。
两台路由器Router A和Router B作为SIP UA。要求SIP呼叫使用的SRTP协议,保护通话双方的通信内容。
图1-15 SIP呼叫使用SRTP协议组网图
(1) 配置Router A
# 配置以太网接口。
<RouterA> system-view
[RouterA] interface ethernet 2/1
[RouterA-Ethernet2/1] ip address 192.168.2.1 255.255.255.0
[RouterA-Ethernet2/1] quit
# 配置SIP呼叫使用SRTP协议。
[RouterA] voice-setup
[RouterA-voice] sip
[RouterA-voice-sip] media-protocol srtp
[RouterA-voice-sip] quit
# 配置POTS语音实体中的本地号码为1111。
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] line 1/0
[RouterA-voice-dial-entity1111] match-template 1111
# 配置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 port 5060
[RouterA-voice-dial-entity2222] match-template 2222
[RouterA-voice-dial-entity2222] quit
(2) 配置Router B
# 配置以太网接口。
<RouterB> system-view
[RouterB] interface ethernet 2/1
[RouterB-Ethernet2/1] ip address 192.168.2.2 255.255.255.0
[RouterB-Ethernet2/1] quit
# 配置SIP呼叫使用SRTP协议。
[RouterB] voice-setup
[RouterB-voice] sip
[RouterB-voice-sip] media-protocol srtp
[RouterB-voice-sip] quit
# 配置POTS语音实体中的本地号码为2222。
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 2222 pots
[RouterB-voice-dial-entity2222] line 1/0
[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 port 5060
[RouterB-voice-dial-entity1111] match-template 1111
使用SRTP对语音媒体流进行加密和认证等保护措施,用户的通话内容能够得到有效保护。
SIP UA的配置比较简单,基本可以通过查看配置以及调试信息来定位。以下,就常见的故障如何排除加以说明。
使用代理服务器方式无法建立呼叫。
故障原因可能是未配置SIP代理服务器。
使用display current-configuration查看是否配置了SIP代理服务器或注册服务器。如果尚未配置,在SIP客户端视图中配置SIP代理服务器或注册服务器。
语音网关无法注册到注册服务器上。
故障原因可能是网络故障或者配置问题,请从以下几个方面检查,排除故障:
(1) 检查注册服务器是否路由可达;
(2) 检查注册服务器与本地相关配置是否正确;
(3) 检查注册服务器是否需要鉴权,如果注册服务器需要鉴权,则使用user命令在语音网关上配置SIP鉴权密码。
(4) 检查鉴权信息中realm的配置与注册服务器是否一致,如果本地配置了realm参数,必须保证和注册服务器上的realm相同,否则语音网关不会发起鉴权注册。如果本地不配置realm,则语音网关不进行realm的判断,直接认为服务器是可信的。
采用点对点方式无法建立呼叫。
故障原因可能是所配的对端语音网关IP地址和端口号不正确。检查配置的对端语音网关IP地址和端口号是否正确。
不发送注册报文。
使用debugging voice sip调试开关命令,查看是否发送了注册报文。如果没有,使用register-enable命令打开注册开关。
无法建立TLS呼叫,排除基本的语音网关配置问题。
请按照以下步骤排除问题:
(1) 检查设备是否已经导入或是申请证书;
(2) 是否已经配置了TLS策略;
(3) 检查是否在SIP视图下配置了TLS策略名称;
(4) 检查是否配置呼叫采用了TLS协议(可以在VoIP语音实体或是SIP视图下配置);
(5) 检查在主被叫设备上是否都开启了监听端口;
(6) 检查VoIP语音实体的目的地址对应的端口为5061端口。
随着IP电话技术的广泛应用,企业或组织机构将IP电话从总部的部署扩展到远程分支机构,并通过部署呼叫处理服务器对远程分支机构的呼叫进行集中管理。
当分支机构连接总部的广域网链路发生故障时,为保持呼叫业务的连续性,要求分支机构的语音路由器能够支持本地存活特性,即分支机构语音路由器能够自动检测出连接总部的广域网链路发生故障,并在故障发生时能够为分支机构内用户提供呼叫处理备份,且在故障消除时,分支机构内呼叫处理重新由总部接管。图2-1为这种应用的典型组网图。
本地存活功能具体描述如下。
(1) 当连接总部的广域网链路正常时,分支机构的所有电话用户都注册到总部的语音服务器上,由总部的语音服务器提供呼叫处理。
(2) 当连接总部的广域网链路或主服务器发生故障时:
· 分支机构的语音路由器能够接受该分支机构内的语音网关与IP电话注册;
· 保证分支机构内用户呼叫业务正常进行,包括IP电话之间、IP电话与路由器语音接口FXS之间、路由器语音接口FXS之间三种情况;
· 分支机构用户能够使用IP电话和语音路由器上的语音接口FXS通过PSTN网拨打或接听外部电话;
(3) 当连接总部的广域网链路或主服务器恢复正常时,分支机构语音路由器不再接受用户注册,呼叫处理重新由总部语音服务器接管。
表2-1 SIP本地存活配置任务简介
配置任务 |
说明 |
详细配置 |
配置SIP本地服务器运行模式 |
必选 |
|
配置注册用户信息 |
可选 |
|
配置可信节点信息 |
可选 |
|
配置呼叫限制 |
可选 |
|
配置号码区域前缀 |
可选 适用于外部用户向内部用户发起呼叫 |
|
配置呼叫路由 |
可选 适用于内部用户向外部用户发起呼叫 |
SIP本地服务器的运行模式有两种:
· 独立模式:SIP本地服务器运行在独立模式时可以作为一个小型的语音服务器工作。配置为独立模式时,保活检测命令probe remote-server ipv4失效。
· 本地存活模式:SIP本地服务器运行在本地存活模式下可以支持和远端服务器之间的保活功能,即当和远端服务器之间的通信发生故障时,由SIP本地服务器接管注册和呼叫处理,当和远端服务器之间的通信恢复时,由远端服务器重新接管注册和呼叫处理,此时SIP本地服务器不再接受注册和呼叫处理。配置为本地存活模式时,保活检查配置会定期向远端服务器发送保活检测报文。
表2-2 配置运行模式为独立模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
配置SIP本地服务器运行模式为独立模式 |
mode alone-server |
必选 缺省情况下,SIP本地服务服务器运行于独立模式 需要注意的是,只有在SIP本地服务器处于关闭状态下,才能更改服务器运行模式配置 |
将本地某一接口下配置的IP地址绑定为SIP本地服务器地址 |
server-bind ipv4 ipv4-address [ port port-number ] [ expires time-interval ] |
必选 缺省情况下,未绑定IP地址信息,即不存在服务器功能 需要注意的是,这里的ipv4-address可以配置为本地路由器某一接口下的IP地址,也可以配置为127.0.0.1等本地环回地址,由于将服务器地址配置为127.0.0.1时服务器无法接受远端用户的注册,因此,建议实际组网应用时将服务器地址配置为本地路由器某一接口下的IP地址 该命令仅在服务器关闭时可配置 |
使能SIP本地服务器功能 |
server enable |
必选 缺省情况下,SIP本地服务器功能处于关闭状态 需要注意的是,只有在使能该命令后,SIP本地服务器功能才生效 |
表2-3 配置运行模式为本地存活模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
配置SIP本地服务器运行模式为本地存活模式 |
mode alive-server |
必选 缺省情况下,SIP本地服务器运行于独立模式 需要注意的是,只有在SIP本地服务器处于关闭状态下,才能更改服务器运行模式配置 |
将本地某一接口下配置的IP地址绑定为SIP本地服务器地址 |
server-bind ipv4 ipv4-address [ port port-number ] [ expires time-interval ] |
必选 缺省情况下,未绑定IP地址信息,即不存在服务器功能 需要注意的是,这里的ipv4-address可以配置为本地路由器某一接口下的IP地址,也可以配置为127.0.0.1等本地环回地址,由于将服务器地址配置为127.0.0.1时服务器无法接受远端用户的注册,因此,建议实际组网应用时将服务器地址配置为本地路由器某一接口下的IP地址 该命令仅在服务器关闭时可配置 |
配置保活检查 |
probe remote-server ipv4 ipv4-address [ port port-number ] [ keepalive time-interval ] |
可选 缺省情况下,没有配置保活检查 该命令只有在SIP本地服务器处于本地存活模式时才有效,并且该命令仅在服务器关闭时可配置 |
使能SIP本地服务器功能 |
server enable |
必选 缺省情况下,SIP本地服务器功能处于关闭状态 需要注意的是,只有在使能该命令后,SIP本地服务器功能才生效 |
表2-4 配置注册用户信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
创建一个注册用户视图,并进入该视图 |
register-user tag |
必选 缺省情况下,没有创建任何注册用户 |
配置注册用户的电话号码 |
number party-number |
必选 缺省情况下,没有配置任何用户电话号码 |
配置鉴权信息 |
authentication username username password { cipher | simple } password |
可选 缺省情况下,没有配置鉴权信息 SIP本地服务器在接受用户注册和呼叫时,为检查用户合法性,需要用户提供鉴权信息,通过鉴权的用户才可以注册和发起呼叫 |
配置最长注册间隔时间 |
expires time-interval |
可选 缺省情况下,最长注册间隔时间为server-bind ipv4配置的全局注册间隔时长 |
SIP本地服务器支持用户配置可信节点。SIP本地服务器不需要对来源于可信节点的用户进行鉴权,即在SIP本地服务器上不需要配置对应该号码的用户信息,可信节点上的用户可以直接通过SIP本地服务器发起呼叫。
表2-5 配置可信节点
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
配置可信节点 |
trusted-point ipv4 ipv4-address [ port port-number ] |
必选 缺省情况下,没有任何可信节点 |
SIP本地服务器支持呼叫限制功能,用户通过配置呼叫限制规则项来定义各种规则,通过将规则应用到具体的视图下来实现对管辖内的用户进行呼叫限制。
表2-6 配置呼叫限制规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
进入call-rule-set视图 |
call-rule-set |
- |
创建一个呼叫限制规则,并进入该视图 |
service tag |
- |
配置呼叫限制规则 |
rule tag { deny | permit } { incoming | outgoing } { pattern | any } |
必选 缺省情况下,没有配置任何呼叫限制规则 可以输入多条呼叫限制规则,最多可以配置32条 |
srs命令用来将配置的呼叫限制规则集应用到服务器某一视图下。
srs命令用于sip-server视图时,表示应用的是全局呼叫限制规则集;srs命令用于register-user视图时,表示应用的是注册用户的呼叫限制规则集。当同时在sip-server视图、register-user视图下应用了呼叫限制规则集时,SIP本地服务器的处理顺序是先处理全局呼叫限制规则集,再处理注册用户入呼叫规则集,最后处理注册用户出呼叫规则集。
表2-7 应用全局的呼叫限制规则集
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
应用全局的呼叫限制规则集 |
srs tag |
必选 tag指的是用户已经配置的呼叫限制规则集标签 缺省情况下,没有应用呼叫限制规则集 注册用户只能够指定一个呼叫限制规则集 |
表2-8 应用注册用户的呼叫限制规则集
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
创建一个注册用户,并进入该视图 |
register-user tag |
必选 缺省情况下,没有创建任何注册用户 |
应用注册用户的呼叫限制规则集 |
srs tag |
必选 tag指的是用户已经配置的呼叫限制规则集标签 缺省情况下,没有应用任何呼叫限制规则集 注册用户只能够指定一个呼叫限制规则集 |
SIP本地服务器跟外部网络连接时,可以接受外部用户作为主叫和SIP本地服务器上的注册用户进行呼叫。当外部用户向内部用户发起呼叫时,通过配置区域前缀,SIP本地服务器可以去掉被叫号码的区域前缀,将被叫号码变换为内部短号。例如:外部用户拨打内部用户01050009999,SIP本地服务器收到该请求后,检查是否存在匹配的区域前缀,如果存在一条0105000的区域前缀,那么SIP本地服务器会删除区域前缀0105000,将其变换为内部短号9999,保证双方能够正常通话。
表2-9 配置号码区域前缀
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
配置号码区域前缀 |
area-prefix prefix |
必选 缺省情况下,没有配置任何区域前缀 如果配置了多条区域前缀,SIP本地服务器采用深度匹配原则选择匹配深度最大的前缀 |
为了支持从内部用户到外部用户的呼叫,SIP本地服务器提供静态路由表的路由机制。这种情况下,SIP本地服务器会根据被叫用户号码按照预设的静态路由表进行选路,而该被叫用户号码不需要注册到SIP本地服务器上。通过配置呼出路由,内部用户能够向外部用户发起呼叫。例如:5552000为外部用户,不需要注册到SIP本地服务器。如果SIP本地服务器存在一条区域前缀为333、被叫号码为5552000的呼叫路由表项,那么当内部用户1000拨打外部用户5552000时,SIP本地服务器会为主叫号码添加区域前缀333,即将内部号码转换为3331000。
表2-10 配置呼叫路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入sip-server视图 |
sip-server |
- |
进入call-route视图 |
call-route |
- |
配置呼叫路由 |
trunk tag called-number called-pattern ipv4 dest-ip-addr [ port port-number ] [ area-prefix prefix ] |
必选 缺省情况下,没有配置任何呼叫路由表项 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP本地存活的运行情况,通过查看显示信息验证配置的效果。
表2-11 SIP本地存活显示和维护
操作 |
命令 |
查看注册用户信息 |
display voice sip-server register-user { tag | all } [ | { begin | exclude | include } regular-expression ] |
查看服务器资源使用信息 |
display voice sip-server resource-statistic [ | { begin | exclude | include } regular-expression ] |
SIP本地服务器Router C运行在独立模式下,各个电话均已注册到SIP本地服务器Router C上,话机可以通过SIP本地服务器Router C发起和接受呼叫。
图2-2 SIP本地服务器为独立模式配置组网图
(1) 配置Router C
# 配置运行模式为独立模式。
<RouterC> system-view
[RouterC] voice-setup
[RouterC-voice] sip-server
[RouterC-voice-server] server-bind ipv4 2.1.1.2
[RouterC-voice-server] server enable
# 配置注册用户号码。
[RouterC-voice-server] register-user 1000
[RouterC-voice-server-user1000] number 1000
[RouterC-voice-server-user1000] authentication username 1000 password simple 1000
[RouterC-voice-server-user1000] quit
[RouterC-voice-server] register-user 5000
[RouterC-voice-server-user5000] number 5000
[RouterC-voice-server-user5000] authentication username 5000 password simple 5000
(2) 配置Router A
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1000 pots
[RouterA-voice-dial-entity1000] match-template 1000
[RouterA-voice-dial-entity1000] line 2/0
[RouterA-voice-dial-entity1000] user 1000 password simple 1000
[RouterA-voice-dial-entity1000] quit
[RouterA-voice-dial] entity 5000 voip
[RouterA-voice-dial-entity5000] address sip proxy
[RouterA-voice-dial-entity5000] match-template 5000
[RouterA-voice-dial-entity5000] quit
[RouterA-voice-dial] quit
# 配置SIP注册。
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 2.1.1.2
[RouterA-voice-sip] register-enable on
(3) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 5000 pots
[RouterB-voice-dial-entity5000] match-template 5000
[RouterB-voice-dial-entity5000] line 2/0
[RouterB-voice-dial-entity5000] user 5000 password simple 5000
[RouterB-voice-dial-entity5000] quit
[RouterB-voice-dial] entity 1000 voip
[RouterB-voice-dial-entity1000] address sip proxy
[RouterB-voice-dial-entity1000] match-template 1000
[RouterB-voice-dial-entity1000] quit
[RouterB-voice] quit
# 配置SIP注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 2.1.1.2
[RouterB-voice-sip] register-enable on
(4) 验证配置结果
[RouterC-voice-server-user5000] display voice sip-server register-user all
user number status address
----------------------------------------------------------------------
1000 1000 online 1.1.1.1:5060
5000 5000 online 2.1.1.1:5060
号码1000和号码5000已经成功注册到SIP本地服务器Router C上,两者可以互相通话。
Router A、Router B通过语音服务器VCX进行通话,为了保证Router A、Router B在和语音服务器链路断开时,仍然能够保持呼叫业务,需要把Router C配置为SIP本地服务器的存活模式,电话可以通过Router C发起和接受呼叫。
图2-3 SIP本地服务器为存活模式配置组网图
(1) 配置Router C
# 配置运行模式为本地存活模式。
<RouterC> system-view
[RouterC] voice-setup
[RouterC-voice] sip-server
[RouterC-voice-server] server-bind ipv4 2.1.1.2
[RouterC-voice-server] mode alive-server
[RouterC-voice-server] probe remote-server ipv4 3.1.1.1
[RouterC-voice-server] server enable
# 配置注册用户号码。
[RouterC-voice-server] register-user 1000
[RouterC-voice-server-user1000] number 1000
[RouterC-voice-server-user1000] authentication username 1000 password simple 1000
[RouterC-voice-server-user1000] quit
[RouterC-voice-server] register-user 5000
[RouterC-voice-server-user5000] number 5000
[RouterC-voice-server-user5000] authentication username 5000 password simple 5000
(2) 配置Router A
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1000 pots
[RouterA-voice-dial-entity1000] match-template 1000
[RouterA-voice-dial-entity1000] line 2/0
[RouterA-voice-dial-entity1000] user 1000 password simple 1000
[RouterA-voice-dial-entity1000] quit
[RouterA-voice-dial] entity 5000 voip
[RouterA-voice-dial-entity5000] address sip proxy
[RouterA-voice-dial-entity5000] match-template 5000
[RouterA-voice-dial-entity5000] quit
[RouterA-voice-dial] quit
# 配置SIP注册。
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 3.1.1.1
[RouterA-voice-sip] registrar ipv4 2.1.1.2 slave
[RouterA-voice-sip] register-enable on
(3) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 5000 pots
[RouterB-voice-dial-entity5000] match-template 5000
[RouterB-voice-dial-entity5000] line 2/0
[RouterB-voice-dial-entity5000] user 5000 password simple 5000
[RouterB-voice-dial-entity5000] quit
[RouterB-voice-dial] entity 1000 voip
[RouterB-voice-dial-entity1000] address sip proxy
[RouterB-voice-dial-entity1000] match-template 1000
[RouterB-voice-dial-entity1000] quit
[RouterB-voice-dial] quit
# 配置SIP注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 3.1.1.1
[RouterB-voice-sip] registrar ipv4 2.1.1.2 slave
[RouterB-voice-sip] register-enable on
(4) 验证配置结果
[RouterC-voice-server-user5000] display voice sip-server register-user all
user number status address
----------------------------------------------------------------------
1000 1000 online 1.1.1.1:5060
5000 5000 online 2.1.1.1:5060
号码1000和号码5000已经成功注册到SIP本地服务器Router C上。SIP本地服务器Router C会周期性地向VCX服务器发送Options报文检测链路是否可达,如果链路不可达,则用户可以正常注册和呼叫,如果链路可达,则SIP本地服务器Router C会禁止后续的注册和呼叫,网关Router A和Router C会将注册切换到VCX服务器上,通过VCX服务器进行用户注册和呼叫处理。
如果VCX服务器的链路断开,Router A和Router C上的用户可以重新注册到SIP本地服务器上,继续通过保活服务器发起呼叫。
Router A、Router B通过远端语音服务器VCX进行通话。在Router A上配置SIP本地服务器为存活模式,当Router A检测到与语音服务器VCX的IP链路发生故障时,Router A上的内置SIP本地存活服务器会接受各电话号码的注册,各电话仍可以通过Router A发起和接受呼叫。当IP链路恢复时,Router A将关闭自身的服务器功能,此时各电话号码重新注册到语音服务器VCX上,再次统一接受远端语音服务器VCX的管理。
图2-4 SIP本地服务器为本地存活模式(方式二)
(1) 配置Router A
# 配置以太接口。
<RouterA> system-view
[RouterA] interface ethernet 1/1
[RouterA-Ethernet1/1] ip address 1.1.1.2 255.255.255.0
[RouterA-Ethernet1/1] ip address 2.1.1.2 255.255.255.0 sub
[RouterA-Ethernet1/1] quit
# 配置运行模式为本地存活模式。
[RouterA] voice-setup
[RouterA-voice] sip-server
[RouterA-voice-server] server-bind ipv4 2.1.1.2
[RouterA-voice-server] mode alive-server
[RouterA-voice-server] probe remote-server ipv4 3.1.1.1
[RouterA-voice-server] server enable
# 配置注册用户号码。
[RouterA-voice-server] register-user 1000
[RouterA-voice-server-user1000] number 1000
[RouterA-voice-server-user1000] quit
[RouterA-voice-server] register-user 5000
[RouterA-voice-server-user5000] number 5000
[RouterA-voice-server-user5000] return
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1000 pots
[RouterA-voice-dial-entity1000] match-template 1000
[RouterA-voice-dial-entity1000] line 8/0
[RouterA-voice-dial-entity1000] quit
[RouterA-voice-dial] entity 5000 voip
[RouterA-voice-dial-entity5000] address sip proxy
[RouterA-voice-dial-entity5000] match-template 5000
[RouterA-voice-dial-entity5000] quit
[RouterA-voice-dial] quit
# 配置SIP注册。
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 3.1.1.1
[RouterA-voice-sip] registrar ipv4 2.1.1.2 slave
[RouterA-voice-sip] register-enable on
(2) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 5000 pots
[RouterB-voice-dial-entity5000] match-template 5000
[RouterB-voice-dial-entity5000] line 2/0
[RouterB-voice-dial-entity5000] quit
[RouterB-voice-dial] entity 1000 voip
[RouterB-voice-dial-entity1000] address sip proxy
[RouterB-voice-dial-entity1000] match-template 1000
# 配置SIP注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 3.1.1.1
[RouterB-voice-sip] registrar ipv4 2.1.1.2 slave
[RouterB-voice-sip] register-enable on
(3) 验证配置结果
· 当Router A检测到与语音服务器VCX的IP链路发生故障时,Router A上的内置SIP本地存活服务器会接受各电话号码的注册,各电话仍可以通过Router A发起和接受呼叫。通过display voice sip-server register-user可以查看到1000和号码5000已经成功注册到SIP本地服务器Router A上。
[RouterA-voice-sip] display voice sip-server register-user all
user number status address
----------------------------------------------------------------------
1000 1000 online 1.1.1.2:5060
5000 5000 online 2.1.1.1:5060
· 当IP链路恢复时,Router A将关闭自身的服务器功能,此时各电话号码重新注册到语音服务器VCX上,再次统一接受远端语音服务器VCX的管理。
假设某公司A部门的电话在1000~1999范围内,B部门的电话在5000~5999范围内,现在需要实现如下限制:
· A部门和B部门的电话不能够拨打外线,仅允许两部门内部互通。
· 限制号码5000拨打1000。
图2-5 呼叫限制配置组网图
(1) 配置Router C
# 配置运行模式为独立模式。
<RouterC> system-view
[RouterC] voice-setup
[RouterC-voice] sip-server
[RouterC-voice-server] server-bind ipv4 2.1.1.2
[RouterC-voice-server] server enable
# 配置注册用户号码。
[RouterC-voice-server] register-user 1000
[RouterC-voice-server-user1000] number 1000
[RouterC-voice-server-user1000] authentication username 1000 password simple 1000
[RouterC-voice-server-user1000] quit
[RouterC-voice-server] register-user 1111
[RouterC-voice-server-user1111] number 1111
[RouterC-voice-server-user1111] authentication username 1111 password simple 1111
[RouterC-voice-server-user1111] quit
[RouterC-voice-server] register-user 5000
[RouterC-voice-server-user5000] number 5000
[RouterC-voice-server-user5000] authentication username 5000 password simple 5000
[RouterC-voice-server-user5000] quit
[RouterC-voice-server] register-user 5555
[RouterC-voice-server-user5555] number 5555
[RouterC-voice-server-user5555] authentication username 5555 password simple 5555
[RouterC-voice-server-user5555] quit
# 配置呼叫限制规则集。
[RouterC-voice-server] call-rule-set
[RouterC-voice-server-set] service 0
[RouterC-voice-server-set-svc0] rule 0 deny outgoing any
[RouterC-voice-server-set-svc0] rule 1 permit outgoing 5...
[RouterC-voice-server-set-svc0] rule 2 permit outgoing 1...
[RouterC-voice-server-set-svc0] quit
[RouterC-voice-server-set] service 2
[RouterC-voice-server-set-svc2] rule 0 deny outgoing 1000
[RouterC-voice-server-set-svc2] quit
[RouterC-voice-server-set] quit
[RouterC-voice-server]
# 应用呼叫限制规则集。
[RouterC-voice-server] srs 0
[RouterC-voice-server] register-user 5000
[RouterC-voice-server-user5000] srs 2
(2) 配置Router A
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1000 pots
[RouterA-voice-dial-entity1000] match-template 1000
[RouterA-voice-dial-entity1000] line 2/0
[RouterA-voice-dial-entity1000] user 1000 password simple 1000
[RouterA-voice-dial-entity1000] quit
[RouterA-voice-dial] entity 1111 pots
[RouterA-voice-dial-entity1111] match-template 1111
[RouterA-voice-dial-entity1111] line 2/1
[RouterA-voice-dial-entity1111] user 1111 password simple 1111
[RouterA-voice-dial-entity1111] quit
[RouterA-voice-dial] entity 5000 voip
[RouterA-voice-dial-entity5000] address sip proxy
[RouterA-voice-dial-entity5000] match-template 5...
[RouterA-voice-dial-entity5000] quit
[RouterA-voice-dial] quit
# 配置SIP注册。
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 2.1.1.2
[RouterA-voice-sip] register-enable on
(3) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 5000 pots
[RouterB-voice-dial-entity5000] match-template 5000
[RouterB-voice-dial-entity5000] line 2/0
[RouterB-voice-dial-entity5000] user 5000 password simple 5000
[RouterB-voice-dial-entity5000] quit
[RouterB-voice-dial] entity 5555 pots
[RouterB-voice-dial-entity5555] match-template 5555
[RouterB-voice-dial-entity5555] line 2/1
[RouterB-voice-dial-entity5555] user 5555 password simple 5555
[RouterB-voice-dial-entity5555] quit
[RouterB-voice-dial] entity 1000 voip
[RouterB-voice-dial-entity1000] address sip proxy
[RouterB-voice-dial-entity1000] match-template 1...
[RouterB-voice-dial-entity1000] quit
[RouterB-voice-dial] quit
# 配置SIP注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 2.1.1.2
[RouterB-voice-sip] register-enable on
(4) 验证配置结果
[RouterC-voice-server] display voice sip-server register-user all
user number status address
----------------------------------------------------------------------
1000 1000 online 1.1.1.1:5060
1111 1111 online 1.1.1.1:5060
5000 5000 online 2.1.1.1:5060
5555 5555 online 2.1.1.1:5060
号码已经注册在线,四个号码不能拨外线号码,并且5000号码不能够拨打1000号码,呼叫限制规则配置生效。
假设某公司内部号码为四位,对外的前缀是8899,即外部用户拨打本公司内部号码时,需要加拨8899前缀。SIP本地服务器Router C会去除该前缀,根据四位的内部短号去查找用户,最终使得主被叫用户建立呼叫。与Router A相连的电话为外部用户,没有注册到Router C上,Router B用户已经注册到Router C上。
图2-6 区域前缀配置组网图
(1) 配置Router C
# 配置运行模式为独立模式。
<RouterC> system-view
[RouterC] voice-setup
[RouterC-voice] sip-server
[RouterC-voice-server] server-bind ipv4 2.1.1.2
[RouterC-voice-server] server enable
# 将Router A设置为可信节点。
[RouterC-voice-server] trusted-point ipv4 1.1.1.1
# 配置区域前缀8899。
[RouterC-voice-server] area-prefix 8899
# 配置注册用户号码。
[RouterC-voice-server] register-user 5000
[RouterC-voice-server-user5000] number 5000
[RouterC-voice-server-user5000] authentication username 5000 password simple 5000
(2) 配置Router A
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 55661000 pots
[RouterA-voice-dial-entity55661000] match-template 55661000
[RouterA-voice-dial-entity55661000] line 2/0
[RouterA-voice-dial-entity55661000] quit
[RouterA-voice-dial]entity 88995000 voip
[RouterA-voice-dial-entity88995000] address sip ip 2.1.1.2
[RouterA-voice-dial-entity88995000] match-template 88995000
(3) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 5000 pots
[RouterB-voice-dial-entity5000] match-template 5000
[RouterB-voice-dial-entity5000] user 5000 password simple 5000
[RouterB-voice-dial-entity5000] line 2/0
[RouterB-voice-dial-entity5000] quit
# 配置SIP注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 2.1.1.2
[RouterB-voice-sip] register-enable on
(4) 验证配置结果
· 通过display voice sip-server register-user可以查看到公司内部号码5000已经成功注册到SIP本地服务器Router C上。
[RouterC-voice-server-user5000] display voice sip-server register-user all
user number status address
---------------------------------------------------------------------
5000 5000 online 1.1.1.1:5060
· 如果公司外部号码55661000拨打公司号码88995000,SIP本地服务器Router C会去除被叫号码的前缀8899,变成内部短号5000。5000话机摘机后,双方能够建立通话。
假设某公司内部号码为四位,对外的前缀是8899,即本公司内部用户拨打外部号码时会通过服务器配置的呼叫路由呼出,并且会为主叫号码加拨8899前缀。Router B为外部用户,没有向Router C注册,Router A中号码1000已经注册到了服务器Router C上。
图2-7 呼叫路由配置组网图
(1) 配置Router C
# 配置运行模式为独立模式。
<RouterC> system-view
[RouterC] voice-setup
[RouterC-voice] sip-server
[RouterC-voice-server] server-bind ipv4 2.1.1.2
[RouterC-voice-server] server enable
# 配置呼叫路由。
[RouterC-voice-server] call-route
[RouterC-voice-server-route] trunk 0 called-number 55665000 ipv4 2.1.1.1 area-prefix 8899
# 配置注册用户号码。
[RouterC-voice-server] register-user 1000
[RouterC-voice-server-user1000] number 1000
[RouterC-voice-server-user1000] authentication username 1000 password simple 1000
(2) 配置Router A
# 配置语音实体。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 1000 pots
[RouterA-voice-dial-entity1000] match-template 1000
[RouterA-voice-dial-entity1000] line 2/0
[RouterA-voice-dial-entity1000] user 1000 password simple 1000
[RouterA-voice-dial-entity1000] quit
[RouterA-voice-dial]entity 55665000 voip
[RouterA-voice-dial-entity55665000] address sip proxy
[RouterA-voice-dial-entity55665000] match-template 55665000
[RouterA-voice-dial-entity55665000] quit
[RouterA-voice-dial] quit
# 配置SIP注册。
[RouterA-voice] sip
[RouterA-voice-sip] registrar ipv4 2.1.1.2
[RouterA-voice-sip] register-enable on
(3) 配置Router B
# 配置语音实体。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 55665000 pots
[RouterB-voice-dial-entity55665000] match-template 55665000
[RouterB-voice-dial-entity55665000] line 2/0
[RouterB-voice-dial-entity55665000] quit
(4) 验证配置结果
[RouterC-voice-server-user1000] display voice sip-server register-user all
user number status address
---------------------------------------------------------------------
1000 1000 online 1.1.1.1:5060
1000号码已经注册到服务器上,当1000拨打55665000时,SIP本地服务器Router C会通过呼叫路由将呼叫发送到Router B上,并且会为主叫号码加前缀8899,55665000话机振铃,摘机后双方可以通话。
在如图3-1所示的传统电话网络中,企业通过内部的PBX完成所有内部呼叫,企业和外部的通信都是通过PSTN电话运营商提供的中继线路进行呼叫。
随着IP技术的发展,越来越多的企业部署如图3-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,其典型组网图如图3-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。图3-4所示为应用SIP Trunk技术的实际组网图。
与SIP Trunk相关的协议规范有:
· RFC 3261
· RFC 3515
· SIPconnect Technical Recommendation v1.1
在SIP Trunk设备上需要进行如下配置。
表3-1 SIP Trunk配置任务简介
配置任务 |
说明 |
详细配置 |
|
使能SIP Trunk功能 |
必选 |
||
配置SIP服务器组 |
创建SIP服务器组 |
必选 |
|
使能SIP服务器组的实时切换功能 |
SIP服务器组中存在多个服务器时,此配置任务为必选 |
||
配置SIP服务器组的保活和备份功能 |
|||
配置SIP Trunk账户 |
配置SIP Trunk账户注册 |
必选 |
|
配置SIP Trunk账户注册的相关参数 |
可选 |
||
配置呼叫路由(内网用户呼叫外网用户) |
配置SIP Trunk账户呼叫(方式一:绑定SIP服务器组索引) |
三种方式必选其一 |
|
配置SIP Trunk账户呼叫(方式二:指定目的地址) |
|||
配置SIP Trunk账户呼叫(方式三:使用SIP代理服务器) |
|||
配置呼叫匹配规则 |
可选 |
||
配置呼叫路由(外网用户呼叫内网用户) |
必选 |
||
配置编解码透传 |
可选 |
||
配置媒体旁路 |
可选 |
||
配置DO-EO转换 |
可选 |
||
配置编解码转换 |
可选 |
||
配置地址隐藏 |
可选 |
||
配置呼叫前传 |
可选 |
||
配置呼叫转接 |
可选 |
||
配置呼叫内信令透传 |
可选 |
在使用SIP Trunk的各项功能前,需要先使能SIP Trunk。需要注意的是,开启SIP Trunk功能后,不推荐同时将设备作为SIP UA使用。
表3-2 使能SIP Trunk功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
使能SIP Trunk功能 |
sip-trunk enable |
必选 缺省情况下,SIP Trunk功能处于关闭状态 |
SIP服务器组用来对注册和呼叫所使用的服务器进行管理。同一个SIP服务器组下可以配置最多5条SIP服务器信息,地址索引代表SIP服务器的优先级,索引值越小优先级越高。正在使用的SIP服务器为当前服务器,SIP服务器组中的每一个服务器都可以成为当前服务器,但同一时间只能存在一个当前服务器。
表3-3 创建SIP服务器组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
创建一个服务器组,并进入服务器组视图 |
server-group group-number |
必选 |
添加SIP服务器组,并配置该SIP服务器信息 |
address index-number { ipv4 ip-address | dns dns-name } [ port port-number ] [ transport { udp | tcp | tls } ] [ url { sip | sips } ] |
必选 缺省情况下,在SIP服务器组中不存在任何服务器信息 同一个SIP服务器组下可以配置最多5条SIP服务器信息,地址索引代表SIP服务器的优先级,索引值越小优先级越高 |
配置SIP服务器组的名称 |
group-name group-name |
可选 缺省情况下,没有配置SIP服务器组的名称 SIP服务器组的名称用于标识SIP服务器组,通常使用运营商的服务器域名作为SIP服务器组的名称。如果没有配置SIP服务器组名称,则使用assign命令配置的host-name作为主机名。如果没有使用assign命令配置主机名,则使用SIP服务器组中当前服务器的IP地址或域名标识SIP服务器组。 |
配置SIP服务器组的描述信息 |
description text |
可选 缺省情况下, SIP服务器组没有描述信息 |
· 若SIP Trunk帐户向SIP服务器发送注册请求后,没有接收到回应报文或收到408/5XX(502、504、505、513除外)应答,SIP Trunk设备会立刻尝试连接次优先级SIP服务器,直到与SIP服务器组内的SIP服务器连接成功或尝试完组内所有的服务器;
· 若SIP Trunk帐户发起呼叫后,没有收到回应报文或收到403/408/5XX(502、504、505、513除外)应答,SIP Trunk设备会立刻尝试连接次优先级SIP服务器,直到与SIP服务器组内的SIP服务器连接成功或尝试完组内所有的服务器。
表3-4 使能SIP服务器组的实时切换功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
创建一个服务器组,并进入服务器组视图 |
server-group group-number |
必选 |
使能SIP服务器组的实时切换功能 |
hot-swap enable |
必选 缺省情况下,SIP服务器组的实时切换功能处于关闭状态 |
SIP服务器组的切换时间由voip timer voip-to-pots决定,voip timer voip-to-pots命令的相关介绍请参见“语音命令参考”中的“语音实体”。
SIP服务器组保活功能用来探测SIP服务器组中SIP服务器是否可用,SIP Trunk设备会根据探测结果和配置的备份模式选择当前服务器。如果不启用保活功能,SIP服务器组的当前服务器将一直是服务器组中具有最高优先级的服务器。
SIP服务器组有两种保活模式:
· OPTIONS保活模式:SIP Trunk设备通过定期发送OPTIONS报文的方式进行保活探测,如果SIP Trunk设备收到SIP服务器对OPTIONS报文的应答报文为408/5XX(502、504、505、513除外),则认为SIP服务器不可达。
· REGISTER保活模式:注册用的REGISTER报文同时具有对SIP服务器探测的作用,如果SIP Trunk设备收到SIP服务器对REGISTER报文的应答报文为408/5XX(502、504、505、513除外),则认为SIP服务器不可达。
SIP服务器组的备份模式在SIP客户端视图下配置。SIP服务器组有两种备份模式:
· parking备份模式:SIP Trunk设备向当前服务器发送OPTIONS或REGISTER保活报文,当前服务器不可用时,SIP Trunk设备会选择SIP服务器组中具有次优先级的服务器作为当前服务器。即使原先的服务器恢复正常工作,SIP Trunk设备也不会切换服务器。选用parking模式时,需要事先使用keepalive命令开启OPTIONS或REGISTER保活模式。
· homing备份模式:SIP Trunk设备同时向当前服务器以及最高优先级服务器发送OPTIONS保活报文。当前服务器不可用时,SIP Trunk设备会选择SIP服务器组中具有次优先级的服务器作为当前服务器。一旦最高优先级服务器可用,SIP Trunk设备立刻选择其为当前服务器。选用homing模式时,需要事先使用keepalive命令将保活模式设置为OPTIONS模式。
表3-5 配置SIP服务器组的保活和备份功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
创建一个服务器组,并进入服务器组视图 |
server-group group-number |
必选 |
配置SIP服务器组的保活模式 |
keepalive { options [ interval seconds ] | register } |
必选 缺省情况下,不启用保活功能 如果不启用保活功能,当前服务器一直为SIP服务器组中优先级最高的SIP服务器 |
返回系统视图 |
quit |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP服务器组的备份模式 |
redundancy mode { homing | parking } |
可选 缺省情况下,备份模式采用parking模式 |
当内网中的SIP Trunk用户使用指定的SIP服务器组对外网用户发起呼叫时,用户可以通过命令行在服务器组下配置指定向外网发出的信令流或媒体流的源地址。SIP服务器组支持源地址绑定通过绑定静态IP地址或某一类型接口上的主地址完成。
· 静态IP地址绑定:指定SIP呼叫中的源地址为绑定的静态地址。
· 源地址接口绑定:在大型网络环境中,设备接口上的IP地址一般由DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器或PPPoE(Point-to-Point Protocol over Ethernet,点对点以太网承载协议)服务器分配。为了适应上述网络环境,用户可以使用源地址绑定技术把SIP协议的信令流和媒体流的源地址绑定到某一接口上,该接口上的地址可以通过DHCP或PPPoE服务器动态分配,这种动态方式避免了静态IP地址绑定方式中地址变换时需要手工更新的缺点,便于网络管理员对网络进行管理。
目前支持SIP服务器组支持源地址绑定的接口类型有三层以太网接口、三层千兆以太网接口和拨号接口。
· 关于DHCP功能的介绍和配置,请参见“三层技术-IP业务配置指导”中的“DHCP”。
· 关于PPPoE功能的介绍和配置,请参见“二层技术-广域网接入配置指导”中的“PPPoE”
· 配置SIP帐户注册。
· 配置SIP帐户呼叫。
表3-6 配置SIP支持源地址绑定
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
创建一个服务器组,并进入服务器组视图 |
server-group group-number |
- |
配置SIP服务器组支持源地址绑定 |
source-bind { media | signal } { interface-type interface-number | ipv4 ip-address } |
可选 缺省情况下,SIP服务器组没有配置源地址绑定 |
表3-7 配置SIP服务器组支持源地址绑定命令的生效情况
状态 |
生效情况 |
在通话过程中 |
配置source-bind · 媒体流源地址不会随之动态更新,在下一次创建新的会话时该绑定才会在相应的媒体流上生效 · 对于信令流,无论当前是否有SIP会话,绑定成功后都将立即生效 |
绑定的接口或静态IP地址对应的接口shutdown |
源地址绑定功能失效,信令流或媒体流的发送恢复为自适应方式;当恢复为up后,绑定功能恢复正常使用 |
绑定的静态地址被删除、修改或绑定的接口被删除 |
相关联的绑定配置也将被删除 |
绑定的热插拨接口被拨出 |
相关联的绑定配置也将被取消,当下次该接口被插入后,绑定配置将同步恢复 |
相关接口对应的物理层或链路层状态为down |
配置绑定后,绑定参数不会生效,此时的报文发送方式仍为缺省的自适应方式,即报文发送方式恢复为自动从IP层获取地址 |
使用的DHCP租约期已过,从DHCP服务器动态获得了新的IP地址时 |
配置接口绑定,则会使用最新的接口主地址作为源地址 |
使能SIP帐户的注册功能 |
配置信令流的源地址绑定,后续发送的注册更新报文将使用最新绑定的信令流的地址发起注册 |
SIP Trunk账户用来管理运营商给用户分配的各种信息。SIP Trunk账户下可配置认证用户名、认证密码、主机名、主机用户名以及该账号相关联的SIP服务器组等属性。
表3-8 配置SIP Trunk账户注册
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
创建一个账户,并进入账户视图 |
sip-trunk account index-number |
- |
启用SIP Trunk账户 |
account enable |
可选 缺省情况下,SIP Trunk账户处于启用状态 |
配置ITSP为SIP Trunk账户分配的主机用户名 |
assign contact-user user-name |
必选 缺省情况下,没有指定主机用户名 |
配置ITSP为SIP Trunk账户分配的主机名 |
assign host-name host-name |
可选 缺省情况下,没有指定主机名 |
指定该SIP Trunk账户使用的注册服务器组 |
registrar server-group group-number [ expires time ] |
必选 缺省情况下,没有指定SIP Trunk账户使用的注册服务器组的索引 |
配置SIP Trunk账户的认证用户名和密码信息 |
user username password { simple | cipher } password |
可选 缺省情况下,SIP Trunk账户没有认证用户名和密码信息 |
使能SIP Trunk账户注册功能 |
register enable |
必选 缺省情况下,SIP Trunk账户注册功能处于关闭状态 |
请参见“1.7.5 配置注册相关的时间参数”。
当内网的SIP Trunk账户需要对外网用户发起呼叫时,需要在VoIP语音实体下绑定SIP Trunk账户,可以通过以下三种方式配置呼叫路由。
· 绑定SIP服务器组索引
· 指定目的地址
· 配置使用SIP代理服务器
表3-9 配置SIP Trunk账户呼叫
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体绑定的SIP Trunk账户 |
bind sip-trunk account account-index |
必选 缺省情况下,在VoIP语音实体下没有绑定任何SIP Trunk账户 VoIP语音实体下只能绑定已存在的SIP Trunk账户 |
配置VoIP语音实体绑定的服务器组 |
address sip server-group group-number |
必选 缺省情况下,在VoIP语音实体下没有绑定任何SIP服务器组 VoIP语音实体下只能绑定一个已存在的SIP服务器组 |
表3-10 配置SIP Trunk账户呼叫
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体绑定的SIP Trunk账户 |
bind sip-trunk account account-index |
必选 缺省情况下,在VoIP语音实体下没有绑定任何SIP Trunk账户 VoIP语音实体下只能绑定已存在的SIP Trunk账户 |
配置目的地址 |
address sip { dns domain-name [ port port-number ] | ip ip-address [ port port-number ] } |
必选 缺省情况下,没有配置目的地址 |
当配置的选路方式为proxy时,SIP Trunk设备会使用proxy命令指定的SIP服务器组进行呼叫。
proxy命令配置的代理服务器也可用于注册。当SIP客户端视图下没有使用registrar或registrar server-group配置指定的注册服务器时,可以向proxy命令配置的代理服务器或者SIP服务器组进行注册。
表3-11 配置SIP Trunk账户呼叫
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体绑定的SIP Trunk账户 |
bind sip-trunk account account-index |
必选 缺省情况下,在VoIP语音实体下没有绑定任何SIP Trunk账户 VoIP语音实体下只能绑定已存在的SIP Trunk账户 |
配置选路方式为SIP代理服务器 |
address sip proxy |
必选 缺省情况下,没有配置选路方式 |
退回语音视图 |
quit |
- |
进入SIP客户端视图 |
sip |
- |
配置使用SIP代理服务器 |
proxy { dns domain-name | ipv4 ip-address [ port port-number ] | server-group group-number } |
必选 缺省情况下,没有配置使用代理服务器 |
在VoIP语音实体视图下配置源、目的主机前缀名和源IP地址,可以用来控制呼叫路由的选择。如果配置了多种match命令,那么只有满足所有呼叫匹配规则的呼叫才能通过。目前提供三种呼叫匹配规则:
· match source host-prefix命令用来配置匹配VoIP语音实体的源主机名前缀。在选择呼叫路由时,源主机名前缀用来和源主机名匹配。如果SIP Trunk设备接收到的INVITE消息中携带了Remote-Party-ID头域,则主叫信息需要从该头域中提取;如果INVITE消息中携带了Privacy头域,那么主叫信息需要从P-Asserted-Identity头域或者P-Preferred-Identity头域中提取;如果INVITE消息没有携带P-Asserted-Identity/P-Preferred-Identity和Remote-Party-ID头域,源主机名取自INVITE请求中From头域的主机名。
· match destination host-prefix命令指定匹配VoIP语音实体的目的主机名前缀。在选择呼叫路由时,目的主机名前缀用来和目的主机名匹配。目的主机名取自SIP Trunk设备接收到的INVITE请求中To头域的主机名。
· match source address命令用来配置匹配VoIP语音实体的源地址。
表3-12 配置呼叫匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
指定匹配VoIP语音实体的源主机名前缀 |
match source host-prefix host-prefix |
可选 缺省情况下,没有指定匹配该VoIP语音实体的源主机名前缀,即可以匹配所有源主机名 |
指定匹配VoIP语音实体的目的主机名前缀 |
match destination host-prefix host-prefix |
可选 缺省情况下,没有指定匹配该VoIP语音实体的目的主机名前缀,即可以匹配所有目的主机名 |
指定匹配VoIP语音实体的源地址 |
match source address { ipv4 ip-address | dns dns-name | server-group group-index } |
可选 缺省情况下,没有指定匹配该VoIP语音实体的源地址,即可以匹配所有源主机名 |
表3-13 配置呼叫路由(外网用户呼叫内网用户)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置被叫的号码模板 |
match-template match-string |
必选 缺省情况下,没有配置语音实体的被叫号码模板 |
配置呼叫路由 |
address sip { dns domain-name [ port port-number ] | ip ip-address [ port port-number ] | proxy } |
必选 缺省情况下,没有配置呼叫路由 |
在SIP Trunk设备不能支持主叫双方均支持的编解码能力的情况下,可以通过codec transparent命令在SIP Trunk设备上使能编解码透传。使能该功能后,SIP Trunk设备不会干预呼叫两端的编解码协商,而是将编解码能力集透传给对方,由呼叫双方完成编解码协商。
表3-14 配置编解码透传
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能编解码透传 |
codec transparent |
可选 缺省情况下,SIP Trunk设备不会透传编解码,而是参与呼叫双方的媒体协商 需要注意的是:如果要在SIP Trunk设备上使能该功能,建议用户在内外网的VoIP语音实体上同时使能编解码透传命令 |
当不需要设备进行编解码转换也不需要设备对呼叫端点隐藏彼此网络地址时,可以通过media flow-around命令在SIP Trunk设备上使能媒体旁路。使能该功能后,SIP Trunk设备不会干预呼叫端点两侧的媒体流交互,而是允许媒体流在呼叫的两个SIP端点间直接传输。
表3-15 配置媒体旁路
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能媒体旁路 |
media flow-around |
可选 缺省情况下,设备作为RTP中继代理,媒体流经过设备进行中继转发 |
由于目前很多运营商均不接受不携带SDP Offer的INVITE消息,所以可以通过early-offer forced命令在SIP Trunk设备上配置DO-EO转换功能(delayed offer到early offer的INVITE消息的转换功能)。配置该功能后,设备可以将不携带SDP Offer的INVITE消息转换为携带SDP Offer的INVITE消息,以满足服务器业务呼叫的需求和运营商计费安全的需求。
表3-16 配置DO-EO转换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能DO-EO转换 |
early-offer forced |
可选 缺省情况下,DO-EO转换功能处于关闭状态 需要注意的是,如果启用了编解码透传功能或媒体旁路功能,则该命令无效 |
对于由SIP Trunk设备来控制呼叫两侧媒体能力协商结果的方式来说,可能会出现在特定业务下,无法取到双方均支持的编解码能力,从而导致呼叫失败的情况。此时可以通过codec transcoding命令使能编解码转换功能。使能该功能后,SIP Trunk设备可以使用自己的编解码能力集分别和呼叫双方进行协商,即使和呼叫两侧协商出来的编解码不相同,SIP Trunk设备也可以利用DSP的编解码转换功能对通过SIP Trunk设备的媒体流进行编解码转换。
表3-17 配置编解码转换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能编解码转换 |
codec transcoding |
可选 缺省情况下,语音实体下设备的编解码转换功能处于关闭状态 需要注意的是: · 如果启用了编解码转换功能,但呼叫时没有空闲的编解码转换DSP资源可用,则呼叫无法建立 · 如果在实体下配置了编解码透传功能,则最终呼叫将采用编解码透传方式建立 · 如果在实体下配置了媒体流不经过设备进行转发功能,则最终呼叫将采用媒体流旁路功能 |
SIP Trunk设备作为会话边界网关时,通常需要隐藏终端地址,此时SIP Trunk设备会将SIP报文中携带的终端地址信息替换为对应出口的地址信息,对于呼叫两端来说,设备是信令和媒体报文的唯一入口点。
表3-18 配置地址隐藏
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
使能地址隐藏 |
address-hiding enable |
可选 缺省情况下,SIP到SIP呼叫的地址隐藏功能处于关闭状态 需要注意的是,如果在语音实体下配置了媒体旁路功能,信令报文中携带的媒体流地址不会被隐藏 |
通常SIP Trunk设备通过透传携带呼叫前转信息的SIP消息到终端,让终端自行完成前转操作。但是也可能存在部分终端并不支持前转类消息的情况,因此为了防止终端对前转类消息的错误处理,SIP Trunk设备可以在主叫方并不感知的情况下处理前转类消息,代替主叫方完成前传操作。使能该功能后,前转类消息将由SIP Trunk设备本地处理,不再透传到终端。
表3-19 配置呼叫前传
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能呼叫前转 |
supplementary−service sip call-forwarding |
可选 缺省情况下,SIP到SIP呼叫的呼叫前转功能处于关闭状态 |
通常SIP Trunk设备通过透传呼叫转接业务相关消息的SIP消息到终端,让终端自行完成转接操作。但是也可能存在部分终端并不支持转接类消息的情况,因此为了防止终端对转接类消息的错误处理,SIP Trunk设备可以在转接接收方和转接目的方并不感知的情况下处理转接类消息,从而代替其完成转接操作。使能该功能后,转接类消息将由SIP Trunk设备本地处理,不再透传转接类消息到终端。
表3-20 配置呼叫转接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能呼叫转接 |
supplementary−service sip call-transfer |
可选 缺省情况下,SIP到SIP呼叫的对呼叫转接功能处于关闭状态 |
当呼叫双方的媒体流经过SIP Trunk设备进行中继转发时,设备可以通过一定时间内媒体流的传输情况来判断呼叫终端是否已经异常挂机。但是在SIP Trunk设备配置媒体流控制方式为旁路方式时,由于媒体流不经过SIP Trunk设备,设备无法通过上述方法来判断呼叫双方的连接情况。
为解决这个问题,参与呼叫的终端可以使用会话定期更新机制(Session Timer),即主动向SIP Trunk设备定期发送会话更新的re-INVITE或者UPDATE请求,让SIP Trunk设备了解当前通话双方的状态。
会话定期更新机制默认由主叫方发起,但当被叫方也支持该机制的情况下,可以通过使能呼叫内信令透传功能来指定透传消息中会话更新相关参数由被叫方进行处理。会话更新请求的发送间隔可由终端之间进行协商确定。否则会话更新机制只在主叫方与SIP Trunk设备间有效。
表3-21 配置呼叫内信令透传
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
使能呼叫内信令透传 |
midcall-signal passthrough |
可选 缺省情况下,SIP到SIP呼叫的会话更新信令消息的透传功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP Trunk功能的运行情况,通过查看显示信息验证配置的效果。
表3-22 SIP Trunk显示和维护
操作 |
命令 |
查看SIP Trunk账户状态 |
display voice sip-trunk account [ | { begin | exclude | include } regular-expression ] |
查看SIP服务器组的详细信息 |
display voice server-group [ group-number ] [ | { begin | exclude | include } regular-expression ] |
某企业部署SIP Trunk设备。其中,Router A为企业内网设备,Router B为企业外网设备,要求内外网之间的所有电话都要通过SIP Trunk设备。
(1) 在企业内网设备Router A上的配置思路如下:
· 在POTS语音实体中配置本地号码为2000。
· 在VoiP语音实体中配置被叫号码为1000,目的地址为SIP Trunk的接口地址。
(2) 在SIP Trunk设备上的配置思路如下:
· 使能SIP Trunk功能。
· 创建SIP服务器组,配置SIP服务器的地址信息。
· 创建SIP Trunk账户,配置运营商分配的主机用户名,并将该账户注册到运营商的服务器上。
· 配置从内网到外网的呼叫路由。该呼叫路由通过SIP服务器组完成内网用户的对外呼叫。
· 配置从外网到内网的呼叫路由。该呼叫路由的目的地址为内网设备Router A的接口地址。
(3) 在企业外网设备Router B上的配置思路如下:
· 在POTS语音实体中配置本地号码为1000,并将号码注册到运营商的服务器上。
· 在VoIP语音实体中配置被叫号码为2000,采用SIP代理服务器方式进行呼叫。
图3-5 SIP Trunk典型配置举例(SIP服务器组中只有一个服务器)
(1) 配置企业内网设备Router A
# 配置POTS语音实体中的本地号码为2000。
<RouterA> system-view
[RouterA] voice-setup
[RouterA-voice] dial-program
[RouterA-voice-dial] entity 2000 pots
[RouterA-voice-dial-entity2000] line 1/0
[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
(2) 配置SIP Trunk设备
# 使能SIP Trunk功能。
<TG> system-view
[TG] voice-setup
[TG-voice] sip-trunk enable
# 创建SIP服务器组1,只添加一个SIP服务器,其地址索引为1,该SIP服务器的IPv4地址为10.1.1.2。
[TG-voice] server-group 1
[TG-voice-group1] address 1 ipv4 10.1.1.2
[TG-voice-group1] quit
# 创建SIP Trunk账户1,主机用户名为2000,指定该账户向SIP服务器组1注册。
[TG-voice] sip-trunk account 1
[TG-voice-account-1] assign contact-user 2000
[TG-voice-account-1] registrar server-group 1
[TG-voice-account-1] register enable
[TG-voice-account-1] quit
# 配置呼叫路由(内网用户2000向外网用户1000发起呼叫)。配置VoIP语音实体绑定的SIP服务器组索引为1。
[TG-voice] dial-program
[TG-voice-dial] entity 1 voip
[TG-voice-dial-entity1] address sip server-group 1
[TG-voice-dial-entity1] bind sip-trunk account 1
[TG-voice-dial-entity1] match-template 1000
[TG-voice-dial-entity1] quit
# 配置呼叫路由(外网用户1000向内网用户2000发起呼叫)。对端的IP地址为内网设备Router A的接口地址1.1.1.1。
[TG-voice-dial] entity 2 voip
[TG-voice-dial-entity2] address sip ip 1.1.1.1
[TG-voice-dial-entity2] match-template 2000
(3) 配置企业外网设备Router B
# 配置POTS语音实体中的本地号码为1000。
<RouterB> system-view
[RouterB] voice-setup
[RouterB-voice] dial-program
[RouterB-voice-dial] entity 1000 pots
[RouterB-voice-dial-entity1000] line 1/0
[RouterB-voice-dial-entity1000] match-template 1000
[RouterB-voice-dial-entity1000] quit
# 配置VoIP语音实体,被叫号码为2000,采用SIP代理服务器方式进行呼叫。
[RouterB-voice-dial] entity 2000 voip
[RouterB-voice-dial-entity2000] address sip proxy
[RouterB-voice-dial-entity2000] match-template 2000
[RouterB-voice-dial-entity2000] quit
[RouterB-voice-dial] quit
# 配置注册服务器地址为10.1.1.2,并使能注册。
[RouterB-voice] sip
[RouterB-voice-sip] registrar ipv4 10.1.1.2
[RouterB-voice-sip] register-enable on
(1) 在SIP Trunk设备上查看SIP Trunk账户状态
[TG-voice-dial-entity2] display voice sip-trunk account
ID User Group Server Exp Status
1 2000 1 10.1.1.2:5060 1802 Online
从上面的显示信息中可以看到,内网的账户2000已经注册到服务器10.1.1.2上。
(2) 内网和外网能够成功建立呼叫,且所有呼叫均通过SIP Trunk设备
内外网用户进行呼叫时,可以在SIP Trunk设备上使用display voice statistics call-active命令查看到内外网之间的所有电话都经过SIP Trunk设备。
(3) 在运营商的SIP Server上只能看到SIP Trunk设备的接口地址,SIP Trunk设备实现了保护企业内网用户信息的作用。
某企业部署SIP Trunk设备。其中,Router A为企业内网设备,Router B为企业外网设备,要求内外网之间的所有电话都要通过SIP Trunk设备。为了保证呼叫的可靠性,企业选用的运营商要提供多个服务器。
图3-6 SIP Trunk典型配置组网图(SIP服务器组中有多个服务器)
# 使能SIP Trunk功能。
<TG> system-view
[TG] voice-setup
[TG-voice] sip-trunk enable
# 创建SIP服务器组1。在SIP服务器组内有两个SIP服务器,IP地址分别为10.1.1.2和10.1.1.3,其中IP地址为10.1.1.2的SIP服务器优先级更高。
[TG-voice] server-group 1
[TG-voice-group-1] address 1 ipv4 10.1.1.2
[TG-voice-group-1] address 3 ipv4 10.1.1.3
# 开启SIP服务器组实时切换功能,使用OPTIONS保活模式,采用parking备份模式。
[TG-voice-group-1] keepalive options
[TG-voice-group-1] hot-swap enable
[TG-voice-group-1] quit
[TG-voice] sip
[TG-voice-sip] redundancy mode parking
SIP Trunk设备上的其它配置以及其他设备的配置与“3.17.1 4. 配置步骤”相同,此处不再重复。
(1) 当SIP服务器10.1.1.2发生故障时,可以切换到SIP服务器10.1.1.3,完成切换后,内外网之间通信恢复正常。
(2) SIP服务器10.1.1.2恢复正常工作后,SIP Trunk设备也不会切换使用中的服务器,也就是说,SIP服务器10.1.1.3会保持工作。
某企业部署SIP Trunk设备。其中,Router A1和Router A2为企业内网设备,Router B为企业外网设备,要求:
· 与Router A2相连的用户没有权限拨打外网电话。
· 内外网之间的所有电话都要通过SIP Trunk设备。
图3-7 SIP Trunk典型配置组网图(使用呼叫匹配规则)
# 配置呼叫路由(内网用户2000向外网用户1000发起呼叫)。配置VoIP语音实体绑定的SIP服务器组索引为1。
<TG> system-view
[TG] voice-setup
[TG-voice] sip-trunk enable
[TG-voice] dial-program
[TG-voice-dial] entity 1 voip
[TG-voice-dial-entity1] address sip server-group 1
[TG-voice-dial-entity1] bind sip-trunk account 1
[TG-voice-dial-entity1] match-template 1000
# 配置匹配VoIP语音实体的源地址为1.1.1.1。
[TG-voice-dial-entity1] match source address ipv4 1.1.1.1
SIP Trunk设备上的其它配置以及其他设备的配置与“3.17.1 4. 配置步骤”相同,此处不再重复。
· 与Router A1相连的用户可以拨打外网电话,与Router A2相连的用户不能拨打外网电话。
· 外网用户可以呼叫所有内网用户。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!