07-SIP配置
本章节下载 (340.56 KB)
目 录
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终端既要做UAC发起呼叫,同时也要做UAS接收呼叫。
用户代理客户机是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,它就成为用户代理客户机。
用户代理服务器是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时,也作为用户代理服务器。
代理服务器(Proxy Server)的作用就是传递主叫UA发送的会话请求到被叫UA,然后将被叫UA的响应传递回主叫UA,它相当于主叫UA和被叫UA之间传递会话消息的一座桥梁。代理服务器在接收到主叫UA的会话请求后,首先要向注册服务器请求查找被叫UA的位置以及主、被叫UA的呼叫策略信息。只有找到被叫UA并且此呼叫是允许的,代理服务器才会向被叫UA发送会话请求。代理服务器一般在SIP会话中都是需要的。
重定向服务器(Redirect Server)是向主叫UA指明重新呼叫被叫UA的位置的设备。如果主叫UA使用别名呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求。此位置可以是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。
位置服务器(Location Server)是为代理服务器和重定向服务器等提供UA信息的设备。位置服务器记录了注册服务器接收到的UA的信息。位置服务器与注册服务器通常在同一个设备上。
注册服务器(Registrar Server)接受用户注册,注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用。二者都是逻辑组件,一般存在于同一台服务器上。
SIP主要有五个基本功能:
l 确定用户位置:确定被叫SIP用户所在的位置。SIP的最强大之处就是用户定位功能,它可以利用SIP终端在注册服务器上的注册信息实现用户定位,也可以利用其他定位服务器,如DNS、LDAP等提供的定位服务来增强其定位功能。
l 确定用户可用性:确定被叫会话终端是否可以参加此会话。SIP支持多种地址描述和寻址方式,包括:用户名@主机地址(如ab@172.18.24.10)、被叫号码@PSTN网关地址(123456@172.18.24.11)和普通电话号码(如010-12345678)的描述等。这样,SIP主叫按照被叫地址,就可以识别出被叫是否在传统电话网上,然后通过一个与传统电话网相连的网关向被叫发起并建立呼叫。
l 确定用户能力:确定被叫终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,这使得会话双方都可以明确对方的会话能力。
l 建立会话:建立主被叫双方的会话。SIP会话双方通过协商媒体类型和媒体参数,最终选择双方都具有的能力建立起会话。
l 管理会话:可以更改会话参数或中止会话。
SIP的特点如下:
l 标准的开放性。可以将不同运营商引进的各种新的功能、产品和服务整合在一起,供用户自由地选择。
l 配置的灵活性。兼容多种拨号方式,能在有线或无线的设备上实现,可以进行高度灵活的配置,并且能够和其它系统协同工作。
l 系统可扩容性。随着企业规模的扩大,系统也可以随之扩充。
l 支持远端用户。无论用户身在何方,都可以将企业的网络延伸到那里。
l 企业各部分通讯方式的一致性。分支机构、家庭办公室和出差人员使用同样的拨号方式和系统访问方式,便于管理。
l 迅速启动。当建立新的分支机构、吸纳新的员工,或重新安排员工工作或改变其工作地点时,系统相应变更非常迅速。
l 易安装、可维护。非专业人士也可以安装或维护SIP系统。
SIP消息采用文本方式编码,包括请求消息与响应消息两类。
SIP请求消息包括INVITE、ACK、OPTIONS、BYE、CANCEL和REGISTER。
l INVITE请求消息用于邀请用户加入一个呼叫。
l ACK:用于对请求消息的响应消息进行确认。
l OPTIONS:用于请求协商能力信息。
l BYE:用于释放已建立的呼叫。
l CANCEL:用于释放尚未建立的呼叫。
l REGISTER:用于向SIP注册服务器登记用户位置等信息。
SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如表1-1所示。
表1-1 响应消息编号
消息编号 |
消息含义 |
消息归类 |
100~199 |
请求被收到,正在处理中 |
临时消息 |
200~299 |
收到请求,并被成功处理,接受该请求 |
处理成功 |
300~399 |
要完成该请求需要更进一步的操作 |
重定向 |
400~499 |
消息语法错误,服务器不能处理该请求 |
客户端出错 |
在完整的SIP系统中,所有的SIP终端作为User Agent都应该向注册服务器登记注册,以告知其位置、会话能力、呼叫策略等信息。
通常,SIP终端开机启动或者配置管理员执行注册操作时,就向注册服务器发送注册请求消息(Register),该消息中携带了所有需要登记的信息。注册服务器收到注册请求消息后向终端发送回应消息,以告知其请求消息已收到。如果注册成功,就再向终端发送“OK”消息。如图1-1所示。
SIP协议采用Client/Server模型,主要通过UA与代理服务器之间的通信来完成用户呼叫的建立过程。
如图1-2所示,Telephone A需要呼叫Telephone B,两台语音网关作为SIP终端(UA)。当Telephone A拨完Telephone B的号码后,VG 1向Proxy Server发送会话请求消息。Proxy Server通过查找Telephone B的号码所对应的信息,向VG 2发送会话请求消息。VG 2收到请求后,如果Telephone B可用,就向Proxy Server发送应答,并使Telephone B振铃。Proxy Server收到应答后,向VG 1发送应答消息。这里所说的应答包括:两个临时应答(100 Trying 和183 Progress)和一个成功应答(200 OK)。整个过程中的消息交互如图1-3所示。
这个例子是一种简单的应用,只使用了一个代理服务器。在复杂的应用中,可以有多个代理服务器,以及注册服务器。
SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端从而重新直接向被叫终端发送会话请求消息。被叫终端也将直接向主叫终端发送应答消息。呼叫过程的消息交互如图1-4所示。
这是比较常见的一种应用。从原理上来说,重定向服务器也可以向主叫终端回复一个代理服务器的地址,接下来的呼叫过程就和使用代理服务器的呼叫过程一样。
表1-2 SIP配置任务简介
配置任务 |
说明 |
详细配置 |
配置SIP鉴权信息 |
可选 |
|
配置SIP UA上的注册服务器信息 |
必选 |
|
配置SIP UA上的代理服务器信息 |
必选 |
|
配置电话号码模糊注册功能 |
可选 |
|
配置语音实体采用SIP方式选路 |
必选 |
|
配置DTMF码的传输方式 |
可选 |
|
配置源IP地址 |
可选 |
|
配置SIP设备的域名 |
可选 |
|
配置SIP兼容性 |
可选 |
|
配置User-agent和Server头域 |
可选 |
UA的主要工作有两种:一是注册,二是发起或响应会话请求。
注册是UA通过向注册服务器发送注册请求,将UA的相关信息(如地址信息,路由信息,号码信息等)提供给注册服务器。当其它UA要通过代理服务器呼叫本UA时,代理服务器会向注册服务器查询本UA的注册信息。
发起和响应会话请求是UA作为主叫和被叫的基本功能。例如,作为UA的语音网关,当用户拨完被叫电话号码时,就会向被叫UA发送会话请求消息。该消息可能直接发送给被叫UA,也可能通过代理服务器发送。
需要SIP鉴权信息有以下两种情况:
l 当UA使用服务器时,且服务器需要提供鉴权时,才需要设置SIP鉴权信息。
l 在SIP消息的交互过程中,当对端SIP设备有可能要求对本端设备进行鉴权时,需要本端设备提供SIP鉴权信息。
如果在POTS语音实体视图下通过user命令配置了鉴权信息如果在实体视图下配置了user命令,则该实体下的电话号码进行注册需要鉴权信息时选择该实体视图下配置的鉴权信息,否则选择SIP客户端 Client视图下配置的鉴权信息。
注意:
l 如果SIP UA上配置了realm,必须保证和服务器上配置的realm相同,否则会因为不匹配导致SIP UA不进行鉴权注册。如果SIP UA上没有配置realm,则SIP UA不进行realm的匹配判断,认为服务器上的realm是可信的。
l 如果需要在POTS语音实体下配置鉴权信息,建议对应相同电话号码的POTS语音实体配置相同的鉴权信息。
l 在鉴权注册的情况下,使能注册后,不要随意修改user命令,此种操作将会造成更新注册失败。
已经配置SIP服务器。
表1-3 配置全局SIP鉴权信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置全局SIP鉴权信息 |
user username password { cipher | simple } password [ cnonce cnonce | realm realm ] * |
必选 缺省情况下,在SIP客户端视图下用户名为VOICE-GATEWAY,鉴权密码为VOICE-SIP |
表1-4 配置POTS语音实体SIP鉴权信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入语音实体视图 |
entity entity-number pots |
- |
POTS语音实体的SIP鉴权信息 |
user username password { cipher | simple } password [ cnonce cnonce | realm realm ] * |
必选 缺省情况下,在POTS语音实体视图下没有SIP鉴权信息 |
已经配置SIP服务器。
表1-5 配置SIP UA上的SIP服务器信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP 客户端视图 |
sip |
- |
配置SIP UA上的注册服务器信息 |
registrar ipv4 ip-address [ port port-number ] [ expires seconds ] [ slave ] |
必选 缺省情况下,没有配置SIP UA上的注册服务器信息 |
使能SIP注册功能 |
register-enable on |
必选 缺省情况下,SIP注册功能处于关闭 |
已经配置SIP代理服务器。
表1-6 配置SIP UA上的注册服务器信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA上的代理服务器信息 |
proxy ipv4 ip-address [ port port-number ] |
必选 缺省情况下,没有配置SIP UA上的代理服务器信息 |
电话号码模糊注册功能是指为了使用方便,在语音实体下配置被叫号码模板(命令match-template)时往往使用通配符(包括“.”、“T”模式),而不是标准E164号码格式。
启用电话号码模糊注册功能后,在语音网关发送的Register报文中,支持用户在配置POTS语音实体的被叫号码模板时使用通配符,通配符包括“.”和“T”。在发送Register报文之前,语音网关对通配符“.”进行保留,并将通配符“T”转换为“*”。
已经配置SIP服务器。
表1-7 配置电话号码模糊注册功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
启用电话号码模糊注册功能 |
wildcard-register enable |
必选 缺省情况下,禁用电话号码模糊注册功能 |
& 说明:
电话号码模糊注册功能需要注册服务器及位置服务器的支持。
语音网关支持H.323选路和SIP选路。用语音网关作为UA时,可以指定VoIP语音实体使用SIP选路方式。
当组网环境中没有SIP代理服务器时,直接为VoIP实体配置SIP报文发往的静态IP地址和端口号;如果组网环境中具有SIP代理服务器,则配置采用SIP代理服务器完成SIP消息的交互。
已经配置SIP服务器。
表1-8 配置语音实体采用SIP选路方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入VoIP语音实体视图 |
entity entity-number voip |
- |
配置VoIP语音实体到被呼叫语音网关的选路策略为SIP方式 |
address sip { ip ip-address [ port port-number ] | proxy } |
必选 缺省情况下,没有配置VoIP语音实体到达对端语音网关的选路策略方式 |
& 说明:
address sip命令请参见“语音分册”的“VoIP配置命令”。
主被叫用户通话过程中,DTMF(Dual Tone Multi-Frequency,双音多频)码可以采用两种方式在主被叫之间透明传输:带内方式、带外方式。带内方式是指DTMF码封装在RTP语音包中进行传送;带外方式则是指DTMF码封装在SIP消息中传送。
如果要实现DTMF码双向带外传输功能,需要在主叫UA的VoIP语音实体中进行配置,同时还需要在被叫UA的POTS语音实体中进行配置。
已经配置SIP服务器。
表1-9 配置DTMF码的传输方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入语音拨号策略视图 |
dial-program |
- |
进入语音实体视图 |
entity entity-number { pots | voip } |
- |
配置采用SIP带外方式传输DTMF码 |
outband sip |
必选 缺省情况下,采用带内方式传输DTMF码 |
配置SIP UA的源IP地址后,本端设备可以使用该地址作为源地址发送报文。通常选择配置一个逻辑接口(如Loopback接口)的IP地址作为源IP地址,因为逻辑接口总是处于up状态。
已经配置SIP服务器。
表1-10 配置源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置UA发送报文时本地绑定的源IP地址 |
source-ip ip-address |
必选 缺省情况下,没有配置UA发送报文本地绑定的源IP地址 |
SIP地址中可以支持域名地址方式和IP地址方式。如果使用IP地址方式,一旦设备的IP地址发生变化,那么用户的SIP地址也需要改变;因此为了使用户的SIP地址保持固定不变,可以配置SIP UA的地址使用域名地址方式。
表1-11 配置SIP UA的域名
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP客户端视图 |
sip |
- |
配置SIP UA的域名 |
sip-domain domain-name |
必选 缺省情况下,未配置SIP UA的域名 |
与其他厂商设备互通时,可以通过调节下列选项,满足用户的组网需求。
已经配置SIP服务器。
表1-12 配置SIP兼容性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入语音视图 |
voice-setup |
- |
进入SIP 客户端视图 |
sip |
- |
配置SIP兼容性 |
sip-comp { callee | from } |
必选 缺省情况下,没有配置SIP兼容性 |
User-agent头域可以在SIP请求报文中带有UAC端产品名称和UAC端产品版本号,Server头域可以在SIP响应报文中带有UAS端产品名称和UAS端产品版本号。UA使用的版本可能会因为安全漏洞导致UA遭受攻击,所以RFC 3261规定应该根据实际情况配置User-Agent和Server头域标识UA版本号。
已经配置SIP服务器。
表1-13 配置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头域 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后SIP UA的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除SIP UA的统计信息。
操作 |
命令 |
查询SIP UA所有的呼叫统计信息 |
display voice sip call-statistics |
查询SIP UA的注册状态信息 |
display voice sip register-state |
清除SIP UA所有的呼叫统计信息 |
reset voice sip statistics |
两台语音网关作为SIP UA,能够互相直接呼叫。
& 说明:
假设语音网关VG 1与VG 2之间的路由可达,本例中省略了关于路由方面的配置,请用户根据自己的网络环境进行配置。
(1) 配置VG 1
# 配置以太网接口。
<VG1> system-view
[VG1] interface GigabitEthernet 0/0
[VG1-GigabitEthernet0/0] ip address 192.168.2.1 255.255.255.0
# 配置语音实体。
[VG1-GigabitEthernet0/0] quit
[VG1] voice-setup
[VG1-voice] dial-program
[VG1-voice-dial] entity 2222 voip
[VG1-voice-dial-entity2222] address sip ip 192.168.2.2
[VG1-voice-dial-entity2222] match-template 2222
[VG1-voice-dial-entity2222] quit
[VG1-voice-dial] entity 1111 pots
[VG1-voice-dial-entity1111] line 6/0
[VG1-voice-dial-entity1111] match-template 1111
(2) 配置VG 2
# 配置以太网接口。
<VG2> system-view
[VG2] interface GigabitEthernet 0/0
[VG2-GigabitEthernet0/0] ip address 192.168.2.2 255.255.255.0
# 配置语音实体。
[VG2-GigabitEthernet0/0] quit
[VG2] voice-setup
[VG2-voice] dial-program
[VG2-voice-dial] entity 2222 pots
[VG2-voice-dial-entity2222] line 6/0
[VG2-voice-dial-entity2222] match-template 2222
[VG2-voice-dial-entity2222] quit
[VG2-voice-dial]entity 1111 voip
[VG2-voice-dial-entity1111] address sip ip 192.168.2.1
[VG2-voice-dial-entity1111] match-template 1111
两台语音网关作为SIP UA,通过SIP服务器进行SIP呼叫。
& 说明:
l 假设语音网关VG 1、VG 2以及SIP服务器之间的路由可达。本例中省略了关于路由方面的配置,请用户根据自己的网络环境进行配置。
l 由于作为SIP服务器的设备不同,所需进行的配置也不同,此处从略。
(1) 配置VG 1
# 配置以太网接口。
<VG1> system-view
[VG1] interface GigabitEthernet 0/0
[VG1-GigabitEthernet0/0] ip address 192.168.2.1 255.255.255.0
[VG1-GigabitEthernet0/0] quit
# 配置SIP。
[VG1] voice-setup
[VG1-voice] sip
[VG1-voice-sip] registrar ipv4 192.168.2.3
[VG1-voice-sip] proxy ipv4 192.168.2.3
[VG1-voice-sip] user routerA password cipher 1234
[VG1-voice-sip] register-enable on
[VG1-voice-sip] quit
# 配置语音实体。
[VG1-voice] dial-program
[VG1-voice-dial] entity 1111 pots
[VG1-voice-dial-entity1111] line 6/0
[VG1-voice-dial-entity1111] match-template 1111
[VG1-voice-dial-entity1111] quit
[VG1-voice-dial] entity 2222 voip
[VG1-voice-dial-entity2222] address sip proxy
[VG1-voice-dial-entity2222] match-template 2222
[VG1-voice-dial-entity2222] quit
(2) 配置VG 2
# 配置以太网接口。
<VG2> system-view
[VG2] interface GigabitEthernet 0/0
[VG2-GigabitEthernet0/0] ip address 192.168.2.2 255.255.255.0
[VG2-GigabitEthernet0/0] quit
# 配置SIP。
[VG2] voice-setup
[VG2-voice] sip
[VG2-voice-sip] registrar ipv4 192.168.2.3
[VG2-voice-sip] proxy ipv4 192.168.2.3
[VG2-voice-sip] user routerB password cipher 1234
[VG2-voice-sip] register-enable on
[VG2-voice-sip] quit
# 配置语音实体。
[VG2-voice] dial-program
[VG2-voice-dial]entity 2222 pots
[VG2-voice-dial-entity2222] line 6/0
[VG2-voice-dial-entity2222] match-template 2222
[VG2-voice-dial-entity2222] quit
[VG2-voice-dial] entity 1111 voip
[VG2-voice-dial-entity1111] address sip proxy
[VG2voice-dial-entity1111] match-template 1111
[VG2-voice-dial-entity1111] quit
SIP UA的配置比较简单,基本可以通过查看配置以及调试信息来定位。以下,就常见的故障如何排除加以说明。
使用代理服务器方式无法建立呼叫。
故障原因可能是未配置SIP代理服务器。
使用display current-configuration查看是否配置了SIP代理服务器。如果尚未配置,在SIP客户端视图中配置SIP代理服务器。
语音网关无法注册到注册服务器上。
故障原因可能是网络故障或者配置问题,请从以下几个方面检查,排除故障:
l 检查注册服务器是否路由可达;
l 检查注册服务器与本地相关配置是否正确;
l 检查注册服务器是否需要鉴权,如果注册服务器需要鉴权,则使用user命令在语音网关上配置SIP鉴权密码。
l 检查鉴权信息中realm的配置与注册服务器是否一致,如果本地配置了realm参数,必须保证和注册服务器上的realm相同,否则语音网关不会发起鉴权注册。如果本地不配置realm,则语音网关不进行realm的判断,直接认为服务器是可信的。
采用点对点方式无法建立呼叫。
故障原因可能是所配的对端语音网关IP地址和端口号不正确。检查配置的对端语音网关IP地址和端口号是否正确。
不发送注册报文。
使用debugging voice sip调试开关命令,查看是否发送了注册报文。如果没有,使用register-enable命令打开注册开关。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!