`
sun4love
  • 浏览: 226303 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SIP 中文翻译

    博客分类:
  • VOIP
阅读更多

1.介绍

extensions.conf中使用sip设备的语法是SIP/devicenamedevicename名在下一节中说明。

如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNS SRV功能

如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxyhostname形式,proxyhostname的定义在下面的章节说明

2.CLI中的查询命令

usip show peers
     显示所有的SIP peers(包括friends)

usip show users
     显示所有的SIP users(包括friends)

usip show registry
     显示注册到的主机状态

usip debug
    显示所有的Sip信息

umodule reload chan_sip.so
    重新装载sip的配置文件


 

3.设备命名

命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:

1)Asterisk取出SIP From: address中的username,使用它来匹配系统中定义的type=user的的设备名。

2)Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的type=peer的设备。

不要混淆extensions和设备名的概念。设备需要一个唯一的名字。设备名不能用于电话号码。电话号码是拨号计划中的声明的一个extension

注意:参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用

4.通用属性说明
[general];通用属性
context=default;呼入电话默认使用的context
allowguest=no; 允许或拒绝客户呼叫 (默认 yes)
allowoverlap=no; 允许重叠拨号(默认yes)
allowtransfer=no; 允许呼叫转接(默认yes)
realm=mydomain.tld; 认证的领域。默认是asterisk,如果在asterisk.conf中设置了系统名称,
;该值就会默认成系统的名称,Realms设置必须全局唯一。一般可以设置
;为主机名或域名。
bindport=5060;asterisk监听的本地端口号。(SIP标准端口号5060) bindaddr=0.0.0.0; 绑定的IP地址 (0.0.0.0所有地址)
srvlookup=yes; 打开外呼的DNS SRV查找。注意,asterisk仅使用SRV记录中的第一
;个主机。该功能可以在拨号计划中使用SIP/username@domain形式通过
;域名拨打Internet上的SIp电话。
pedantic=yes; 打开头信息中tags值检测,URIs和多行格式化头信息中国际字符转换等
;严格的SIP兼容性问题。(默认是no)

下面是关于TOS参数,可以参考doc/ip-tos.txt
tos_sip=cs3; Sets TOS for SIP packets.
tos_audio=ef; Sets TOS for RTP audio packets.
tos_video=af41; Sets TOS for RTP video packets.

maxexpiry=3600; 注册和订阅的最大间隔-秒
minexpiry=60; 注册和订阅的最大间隔-秒(默认 60)
defaultexpiry=120; 默认注册间隔的时长
t1min=100; 消息到达录音服务器的最小折返时间,默认100 ms
notifymimetype=text/plain; 修改在通知中消息MWI NOTIFY 的mime类型
checkmwi=10; peer检测语音邮箱的时间间隔
buggymwi=no; Cisco SIP防火墙不完全支持MWI RFC。打开该选项时,向电话发送MWI时,也不会收到错误信息。
vmexten=voicemail; 语音邮箱在拨号计划中的extension。用来设置MWI通知消息中的
;Message-Account信息,默认是asterisk。
disallow=all; 先屏蔽掉所有的编码
allow=ulaw; 打开允许的编码,按顺序引用
allow=ilbc; 更多的选项,看文档 doc/rtp-packetization
下面参数设置了呼叫等待音乐的默认项,如果没有在拨号计划中使用Set(CHANNEL(musicclass)=whatever) 指定通道的呼叫等待音乐首选项,将会使用该值。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohinterpret=default
呼叫等到时,建议通道播放的等待音乐。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohsuggest=default
language=en
;设置所有users/peers的语言,也可以对单个users/peers设置。
relaxdtmf=yes; 宽松dtmf处理
trustrpid = no; 是否信任远端ID(Remote-Party-ID)
sendrpid = yes;是否发送远端ID(Remote-Party-ID)
progressinband=never; 是否产生呼入铃音。Never表示从来不适用呼入信号。可选值:yes, no, never 。默认值never。
useragent=Asterisk PBX; 修改user agent 字符串
promiscredir = no; 如果设置为yes, 允许302 或 REDIR非本地SIP地址。注意,对本地
;系统做重定向操作会导致循环调用,asterisk并不支持这种操作。
usereqphone = no; 如果设置为 yes, 会在uri 中增加";user=phone",使uri中包含一个合法
;的电话号码。
dtmfmode = rfc2833; 设置发送DTMF模式。默认:rfc2833

;其他选项:
; info : SIP INFO messages
; inband :按键的设备产生拨号音 (需要64 kbit 编码 -alaw, ulaw)
; auto : 默认使用rfc2833,如果远端不支持时会使用inband
compactheaders = yes
; 发送压缩的SIP头.
videosupport=yes
;打开视频支持。
maxcallbitrate=384
; 视频呼叫的最大速率 (默认 384 kb/s)
callevents=no
; sip ua执行事件时产生管理事件
alwaysauthreject = yes
; 一个INVITE 或 REGISTER请求由于任何原因被拒绝时,总会使用同一
;个原因,用户名合法但密码不正确。而不会告诉请求者是否有这个
;user或peer。这样会减少攻击者扫描SIP账户的可能性。

g726nonstandard = yes
; 是否使用G726-32 协商,使用AAL2包次序来替代RFC3551(需要
;Sipura 和 Grandstream ATAs)的次序。AAL2与RFC3551的规则相反,
;会使用AAL2-G726-32协商。
matchexterniplocally = yes
; 如果本地设置与外部设置相同,仅替代externip 或 externhost.
dynamic_exclude_static = yes
; 不允许动态主机使用静态主机的IP地址注册。这将避免使用相同
;IP注册的错误。
contactdeny=0.0.0.0/0.0.0.0
; 拒绝所有主机的联络
contactpermit=172.16.0.0/255.255.0.0
; 只能有一部分IPs可以注册到该服务器

如果设置了regcontext,将会为一个是有us注册和反注册并且有regexten=配置项目的用户动态创建和销毁一个NoOp priority1extension。可以使用&指定多个context。如果没有指定'regexten' ,将会使用注册peer的regexten或名字。如果指定了多个context,则必须在regexten中使用@来指定。在regexten中也可以使用'&'来指定多个。Regexten中也可以使用模式匹配。
regcontext=sipregistrations

15.
RTP定时器

这些是当前音频和视频流使用的定时器。RTP超时仅仅应用于音频通道。该属性可以全局设置,也可以对每一个设备设置。

 

rtptimeout=60                     ;如果60秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ;主要使用在通话中对方掉电或是老人忘记挂电话的情况。         ;

rtpholdtimeout=300        ;
如果300秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ; 主要使用在我方等待时间过长的情况

rtpkeepalive=<secs>          ;在RTP流中发送保活信息,保持NAT开放。默认是关闭(0)

6.SIP调试信息

sipdebug= yes            ;打开SIP调试信息

recordhistory=yes         ; 默认记录SIP历史

dumphistory=yes          ; 在对话结尾丢且SIP历史,被写到DEBUG日志

 

7.状态通知STATUS NOTIFICATIONS(SUBSCRIPTIONS)

 

可以使用"hint" priority来订阅extensions的状态 (见extensions.conf.sample) 。

chan_sip支持两种通知的格式:dialog-info 和 SIMPLE

如果你为一个设备设置了呼叫限制,就可以得到更多的细节报告(比如busy)。当呼叫限制时,会被告知忙。为了能够转接,你至少需要设置限制级别为2。

对于队列,你需要状态报告达到这个细节的界别。不管怎么样,如果你使用Sip订阅,队列和管理会为读状态信息使用相同的内部接口。

注意,如果设置了一个realtime的拨号计划,并且使用了realtime switch,订阅不会工作。

 

allowsubscribe=no              ;不支持订阅 (默认yes)

subscribecontext= default  ;为订阅请求设置context用来限制订阅到本地extensions。

;可以对每个peer/user进行设置。

notifyringing= yes        ;当发起其他呼叫时,INUSE状态的订阅者是否会发送RINGING (默认no)

notifyhold= yes         ;处于HOLD 状态时,通知订阅者。(默认no)

                            ;如果在使用realtime时,打开了notifyringing 和 notifyhold,将会增加很

                            ;多的数据库的传输。

limitonpeers= yes         ;仅对peers进行呼叫限制。

8.
传真T.38

该项目既可以在[general]中设置,
也可以对每个设备进行配置。设置为yes,表示允许在SIP到Sip的模式下传输传真,传输的两端都必须配置为支持
T38T.38 仅工作在SIP到SIP 呼叫中

 

t38pt_udptl=yes             ; 默认false

9.
外呼SIP注册

 

Asterisk可以把自己作为一个SIP ua注册到一台SIP代理上。注册格式如下:

register=> user[:secret[:authuser]]@host[:port][/extension]

 

 

 

如果没有指定extension,将使用's' extension。该extension必须在extensions.conf中定义,以便于可以从SIP代理上接收呼叫。

Host即可以是DNS中定义的一个主机名,也可以是在下面定义的一个section名,如serverA,见本文最后部分。

 

例子:

register=> serverB:1111@10.0.2.252/serverA

register=> 1234:password@mysipprovider.com         ;将把呼叫传递给's' extension      

 

register=> 2345:password@sip_proxy/1234

 

在代理10.0.2.252上注册serverB。如果你在下面定义了一个section叫做serverA,则呼叫会转到serverA中定义的context中。否则呼叫将会从这个代理上链接到本地extension serverA (定义在extensions.conf中), 使用默认的context。

u
技巧1:尽量避免在sip.conf中设置主机名作为section,如[provider.com]

u
技巧2:如果有双向呼叫时,在代理中分开定义type=peer 和 type=user,避免使用type=friend

 

registertimeout=20              ; 注册间隔20秒(默认)

registerattempts=10            ; 注册尝试次数,

; 0 一直尝试,直到接受了注册。默认值0

10.
NAT支持

如果Asterisk在一个NAT设备内部与外部的一个服务通讯,需要设置externip, externhost 和 localnet。

 

externip= 200.201.202.203      ; 在公网上的一个中间人地址,处理SIP消息。当注册和与一个代理通讯

;时,需要设置externip和localnet

 

                             

externhost=foo.dyndns.net         ; 也可以配置一个域名,Asterisk 将会执行DNS查询。不推荐这

;种方式,尽量使用IP,配置externip

externrefresh=10                ;更新externhost的时间间隔。


 

可以有多个本地配,设置一个合理的就可以。(RFC 1918--私有地址分配 )                             

localnet=192.168.0.0/255.255.0.0   ;All RFC 1918 addresses are local networks

localnet=10.0.0.0/255.0.0.0         ;Also RFC1918

localnet=172.16.0.0/12                 ;Another RFC1918 with CIDR notation

localnet=169.254.0.0/255.255.0.0 ;Zeroconf local network

 

 

nat=设置用于Asterisk在一个公网地址上,需要和一个NAT设备后的设置通讯。如果出现音频问题,一般是NAT配置或防火墙屏蔽了SIP+RTP端口。RTP端口配置在rtp.conf中。

 

nat=no                        ; 全局NAT 配置,(影响所有的peers和users),取下列值:

; yes 总是忽略信息,假定使用NAT

; no 基于RFC3581使用NAT模式(;rport)

; never 从不尝试使用NAT模式或RFC3581支持

; route假定使用NAT,不发送rport

                             

11.
媒体流处理

 

默认情况下,Asterisk会尽量使音频流走最优的路径(re-invite)。如果没有特别设置媒体流需要通过服务器的话,Asterisk会把媒体流重定向。当Asterisk在NAT外部,客户端在NAT内部时,上述功能不能工作,这时必须配置canreinvite=nonat。

 

canreinvite=yes            ; 默认情况下,RTP媒体流会不经过服务器,在呼叫两端直接传递。

; 一些设备不支持这种方式(特别是一端在NAT内)。默认设置yes。

; 如果所有的客户端都在NAT内,或其他原因想让媒体流通过服务器,

;需要关闭该选择。

 

directrtpsetup=yes              ; 打开新的实验性的直接RTP建立,建立一个呼叫,媒体流直接

; peer-to-peer 传递,而不是使用re-invites 方式。视频不支持该方式。

; 被叫方发送RTP载荷和收到200OK响应的fmtp头信息不能与主叫的

; INVITE请求匹配。

; 如果NAT后边的设备设置了canreinvite=yes,传输也会失败。

                     

 

canreinvite=nonat         ; 允许媒体路径重定向的另一个选项,告诉发送媒体流的peer不在

                            ;  NAT里边, (RTP核心可以决定使用收到媒体的from地址).

 

;canreinvite=update             ; 允许媒体路径重定向的第三个选项, UPDATE替代INVITE,可以和'nonat'

                            ; 合并成'canreinvite=update,nonat'. 相当于 'yes'.

12.
REALTIME支持

关于ARA(Asterisk Realtime Architecture)结构的更多信息,可以看源代码中/doc 目录下的realtime.txt和extconfig.txt文件。

 

rtcachefriends=yes              ; 通过把realtime friends加入到一个内部列表中来缓存friends。

                            ;就好像是把friends从配置文件中加载一样。(yes|no)

 

rtsavesysname=yes             ; 注册时保存systemname到realtime数据库,默认no

                       

rtupdate=yes               ; 注册时更新数据库(yes|no)

; 如果设置为yes,当SIP UA 注册成功时,IP、原始端口、注册期间和用

; 户名会被更新到realtime数据库。默认是yes。

; 如果设置为no,realtime功能可能会执行错误。

                             

rtautoclear=yes            ; 自动失效已经创建的friends (yes|no|<seconds>)

; 如果设置为yes,当注册预期时,friend将从注册信息中清除。

; 如果设置为一个整数,friends 会在这个秒数内过期,而不是在注册时间

; 间隔内过期。

                              

 

ignoreregexpire=yes            ; 打开这个设置有两个功能

; 对于非realtime peers,注册过期时,注册信息也不会从内存或asterisk数

; 据库移除。如果有电话呼叫这个peer时,该注册信息会一直可以使用,

; 不管这个peer是否已经过期。

; 对于realtime peers, 无论是否过期,从数据库得到的注册信息仍然可以

; 使用。如果过期,realtime peer信息仍然在内存(由于缓存或其他原因),

; 该信息不会从realtime数据库移除。

13.
SIP域名支持

 

收到的INVITE 和 REFER 消息可以和一系列的被允许的域名匹配。每一个域名能够直接呼入他们描述的特定context.。默认情况下,所有的域都会接收呼叫,并发送呼叫到指定的context或者user/peer指定的Context。如果配置了域列表,REGISTER请求的域不在其中,呼叫将会被拒绝。

 

使用如下方式使用域:

domain=<domain>[,<context>]

例如:

domain=myasterisk.dom

domain=customer.com,customer-context

 

另外,如果需要过滤呼入请求时,应该增加一个服务器的默认域设置。

autodomain=yes

 

 

allowexternaldomains=no           ;不允许请求非本地域

 

domain=mydomain.tld,mydomain-incoming

; 为一个呼入呼叫配置域和context

domain=1.2.3.4                  ; 使用IP地址作为本地域,可以同时又几个域设置。

allowexternaldomains=no           ; 不允许INVITE和REFER请求非本地域,默认yes。

                           

autodomain=yes                 ; 自动把本地主机名和IP地址加入域名列表。

 

fromdomain=mydomain.tld         ; 当进行外呼SIP INVITEs 到一个非peers时,使用主域而不是IP

                                   ; 地址来识别From: headers头信息。这是一个礼貌的用法,它可

                                   ; 能对一些在你的服务器上没有优先账号的目的地址是必须的。

14.
抖动缓存(jitterbuffer配置

 

jbenable=yes                           ; 打开SIP通道接收端的抖动缓冲。默认no。在接收端不能接收

                                   ; 抖动的情况下,可以使用抖动缓存来接收抖动。

 

jbforce=no                       ; 强迫在SIP通道的接收端使用抖动缓存,默认no

 

jbmaxsize=200                 ; 抖动缓存大小(毫秒)

 

jbresyncthreshold= 1000          ; 跳过抖动缓存的帧的时间长度,再同步缓存的帧。可以用来提高

                                   ; 语音的质量。外部设备和程序经常会造成大的跳动或中断。默认

                                   ; 设置为1000。

 

jbimpl=fixed                            ; SIP通道接收端抖动缓存的实现,当前有两种形式:

                                   ;fixed 缓存大小等于jbmaxsize,大小固定。

                                   ;adaptive 可变大小,实际上用于IAX2的一个新的抖动缓存。

                                   ; 默认是fixed

 

jblog=no                           ; 对抖动缓存帧记录日志,默认是no。

;-----------------------------------------------------------------------------------

15.
认证

[authentication]

外呼的全局证书。当一个代理挑战认证您的asterisk服务器,如果挑战通过,这些证书将覆盖peer/register中定义的证书。另外,asterisk也可以使用其他的挑战码对外呼进行认证。我们挑战代理上的认证码,从认证码列表中选择一组证书。

 

语法:

;        auth= <user>:<secret>@<realm>

;        auth= <user>#<md5secret>@<realm>

例子:

;         auth=mark:topsecret@digium.com

 

也可以增加认证配置到peer的定义中。该配置将覆盖其他的认证设置。

16.
User peer friend

 

Users和peers有不同的设置,Friends有Users和peers的所有功能。

 

;User 配置选项:        Peer 配置:

;--------------------        -------------------

Context                context

Callingpres                  callingpres

Permit                         permit

Deny                           deny

Secret                         secret

md5secret                   md5secret

dtmfmode                    dtmfmode

canreinvite                   canreinvite

nat                        nat

callgroup                     callgroup

pickupgroup                pickupgroup

language               language

allow                           allow

disallow                disallow

insecure                insecure

trustrpid                trustrpid

progressinband            progressinband

promiscredir                promiscredir

useclientcode               useclientcode

accountcode                accountcode

setvar                          setvar

callerid                 callerid

amaflags               amaflags

call-limit                call-limit

allowoverlap                allowoverlap

allowsubscribe             allowsubscribe

allowtransfer                allowtransfer

subscribecontext          subscribecontext

videosupport               videosupport

maxcallbitrate                     maxcallbitrate

rfc2833compensate            mailbox

t38pt_usertpsource             username

template

fromdomain

regexten

fromuser

host

port

qualify

defaultip

rtptimeout

rtpholdtimeout

sendrpid

outboundproxy

rfc2833compensate

t38pt_usertpsource

contactpermit         <span styl

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics