是纯软件实现,可以根据需要运行于各种工作站或专用设备中。UAC,UAS,Proxy Server,Redirect Server是在一个具体呼叫事件中扮演的不同角色,而这样的角色不是固定不变的。一个用户终端在会活建立时扮演 UAS,而在主动发起拆除连接时,则扮演UAC。一个服务器在正常呼叫时作为Proxy Server,而如果其所管理的用户移动到了别处,或者网络对被呼叫地址有特别策略,则它将扮演 Redirect Server,告知呼叫发起考该用户新的位置。
除了以上部件,网络还需要提供位置目录服务,以便在呼叫接续过程中定位被叫方(服务器或用户端)的具体位置。这部分协议不是 SIP 协议的范畴,可选用LDAP(轻量目录访问协议)等。
理论上,SIP 呼叫可以只有双方的用户代理参与,而不需要网络服务器。设置服务器,主要是服务提供者运营的需要。运营商通过服务器可以实现用户认证、管理和计费等功能,并根据策略对用户呼叫进行有效的控制。同时可以引入一系列应用服务器,提供丰富的智能业务。
SIP 的组网很灵活,可根据情况定制。在网络服务器的分工方面:位于网络核心的服务器,处理大量请求,负责重定向等工作,是无状态的,它个别地处理每个消息,而不必跟踪纪录一个会话的全过程;网络边缘的服务器,处理局部有限数量的用户呼叫,是有状态的,负责对每个会话进行管理和计费,需要跟踪一个会话的全过程。这样的协调工作,既保证了对用户和会话的可管理性,又使网络核心负担大大减轻,实现可伸缩性,基。SIP 网络具有很强的重路由选择能力,具有很好的弹性和健壮性。
2.2.3.3 SIP 中UA、Proxy和SIP 终端的区别与联系
从逻辑实体分类,SIP 共包含三大逻辑实体:UA、PROXY、SERVER;从SIP 实用产品分类,SIP 产品分三类:SIP 终端、SIP PROXY、SIP SERVER。
SIP UA:
UA 是 SIP 协议中一个逻辑实体,它包括了 UAC/UAS。UAC/UAS 角色只在同一个事务中保持不变。UA 的主要功能是通过发送 SIP 请求发起一个新的事务,发送 SIP Final answer或者 SIP ACK请求结束当前事务。实现中,应包含以下功能:
● 生成 record_set。
● UAS按一定规则接受、拒绝或重定向 SIP 请求。 ● UA 能够选择适当的protocal/port接收应答和发送请求。 ● 重发和重发终止,实现通信的可靠性。
● 能够解释ICMP,收到ICMP差错报文误之后,将它映射到相似的status code处理过程。
SIP PROXY:
按作用分类:outbound proxy;proxy。(有前者,SIP 终端可以作的非常简单)从是否维护连接信息分类:statulful proxy,statuless proxy。从逻辑上来讲,代理最主要的功能是将 SIP 信息包转发给目的用户。它最低限度要包括 UA 功能。在具体实现中,它还应该实现以下功能:
● 呼叫计费。包括强制路由选择。 ● 防火墙。(可选)
● 通过查询DNS,选择 SIP 服务器。
● 检测环路。在路径上包含Fork Proxy服务器,可能会有环路产生,必须检测。 ● 非 SIP URI解释功能:传递 SIP 包到适当的目的地址中去。 ● 丢弃 via header中,最上一个不是自己地址的 SIP 包。
● 特定的 Proxy将实现 IP 到 PSTN 之间的网关。提供 IP、电话、Email 之间的交互。
● 根据传递要求,对VIA 和Record Route进行相应修改。 ● 根据收到的 Cancel,立即发送 200 应答。(快速应答) ● 通过查询 Location server和 redirect server,查找目的用户的地址; SIP SERVER:
主要作为信息数据库,对Proxy提供服务。Server主要分为三类:
● Location Server:存储了 SIP 地址对一个或多个 IP 地址的映射,主要面向Proxy和 Redirect server。
● Redirect server: 接收查询请求,通过 Location Server中找到对应的地址列表,把结果返回给用户。
● Registrar:接收 SIP 终端的 Register 请求,将 SIP 地址和 IP 地址组对写入Location Server的数据库中。
SIP终端:
● 作为用户可用的终端设备,它具备拨打 IP 电话或发起/参与多媒体会议的功能,还有用户友好界面。在其内部应该实现的功能有:
● 发起或结束一个会话。包括:记录会话中每一个子会话的相关状态,即保存并维护每一个活动的 Call leg;维护 Call leg 上”有关的状态(ip/port/protocal/record set/);
● 构造请求和应答 Message: 包含 Req_URI 的选择;通过查询 DNS,选择SIP 服务器;SIP 包的发送目的(Outbound proxy / Request URI);SIP 包的加密;
● Contact Header、Record Set的构造。
● 多播风暴避免。对于多播请求,要延迟 0-1s时间来回答。 ● 智能应答。如果已经在一个会议中,自动代理用户回答。
● 方便的修改会议参数。
● 能够参与多播组。即支持 IGMP。 ● (代替他人)注册,重定向 SIP 请求;
● 通过Contact header实现直接发送到目的用户和重定向用户功能。 ● 可以设置 outbounding proxy。
2.2.4 SIP协议消息
2.2.4.1
SIP 消息总体描述
SIP 是 IETF提出的在 IP 网络上进行多媒体通信的应用层控制协议,可用于建立、修改、终结多媒体会话和呼叫,号称通信技术个的“TCP/IP”,SIP 协议采用基于文本格式的客户-服务器方式 ,以文本的形式表示语法、语义和编码,客户机发起请求,服务器进行响应。SIP 独立于底层协议 TCP、UDP、SCTP,采用自己的应用层刘靠性机制来保证消息的可靠传送。有关 SIP 协议的详细内容参见 IETF RFC3261。
SIP 消息有两种:客户机到服务器的请求(Request),服务器到客户机的响应(Response)。 SIP 消息由一个起始行(start-line)、一个或多个字段(field)组成的消息头、一个标志消息头结束的空行(CRLF)以及作为可选项的消息体message body)组成。其中,描述消息体(message body)的头称为实体头(entity header),其格式如下:
SIP 消息=起始行/状态行
*消息头部(1个或多个头部) CRLF(空行) 〖消息体〗
起始行分请求行(Request Line)和状态行(Status Line)两种,其中请求行是请求消息的起始行,状态行是响应消息的起始行。
消息头分通用头(general-header)、请求头(request-header)、响应头(response-header)和实体头(entity-header)4 种。
2.2.4.2
INVITE
SIP 请求消息
SIP 定义了以下几种方法(methods)。
INVITE 方法用于邀请用户或服务参加一个会话。在 INVITE 请求的消息体中可对被叫方被邀请参加的会话加以描述,如主叫方能接收购媒体类型、发出的媒体类型及其一些参数;对 INVITE 请求的成功响应必须在响应的消息体中说明被叫方愿意接收哪种媒体,或者说明被叫方发出的媒体。
服务器可以自动地用 200(0K)响应响应会议邀请。 ACK
ACK 请求用于客户机向服务器证实它已经收到了对 INVITE 请求的最终响应。ACK只和INIVITE请求一起使用。对2xx最终响应的证实由客户机用户代理发出,对其他最终响应的证实由收到响应的一个客户机用户代理发出 *。
ACK 请求的 To,From,Call-ID,Cseq 字段的值由对应的 INVITE 请求的相应字段的值复制而来。
OPTIONS
用于向服务器查询其能力。如果服务器认为它能与用户联系,则可用一个能力集响应 OPTIONS 请求;对于代理和重定向服务器只要转发此请求,不用显示其能力。
OPTIONS 的 From、To 分别包含主被叫的地址信息,对 OPTIONS 请求的响应中的 From、To(可能加上 tag 参数)、Call-ID 字段的值由 OPTIONS 请求中相应的字段值复制得到。
BYE
用户代理客户机用BYE请求向服务器表明它想释放呼叫。
BYE 请求可以像 INVITE请求那样被转发,可由主叫方发出也可由被叫方发出。呼叫的一方在释放(挂断)呼叫前必须发出 DYE 请求,收到 BYE 请求的这方必须停止发送媒体流给发出BYE 请求的一方。
CANCEL
CANCEL请求用于取消一个 Call-ID,To,From和 Cseq 字段值相同的正在进行的请求,但取消不了已经完成的请求(如果服务器返回一个最终状态响应,则认为请求己完成)。
CANCEL请求中的Call-ID、To、Cseq 的数字部分及 From字段和原请求的对应字段值相同,从而使CANCEL请求与它要取消的请求匹配。
BEGISTER
REGISTER方法用于客户机向 SIP 服务器注册列在To字段中的地址信息。 REGISTER请求消息头中各个字段的含义定义如下: ● To:含有要创建或更新的注册的地址记录。 ● From:含有提出注册的人的地址记录。
● Request-URI:注册请求的目的地址,地址的域部分的值即为主管注册者所在的域,而主机部分必须为空,一般,Request-URI中的地址的域部分的值和 To 中的地址的域部分的值相同。
● Call-ID:用于标识特定客户机的注册请求。来自同一个客户机的注册请求至少在相同重启周期内 Call-ID 字段值应该相同;用户可用不同的 Call-ID值注册不同的地址,后面的注册请求将替提前面的所有请求。
● Cseq:call ID 字段值相同的注册请求的CSeq 字段值必须是递增的,但次序无关系,服务器并不拒绝无序请求。
● Contact:此字段是可选项;用于把以后发送到 TO字段中的URI的非注册请求转到Contact字段给出的位置。如果请求中没有Contact字段,那么注册保持不变
● Expires:表示注册的截止期。 INFO
INFO 方法是对 SIP 协议的扩展,用于传递会话个产生的与会话相关的控制信息,如 ISUP 和 ISDN 信令消息,有关此方法的使用还有待标准化,详细内容参见 IETF RFC 2976
其他扩展
其他扩展的含义如下;
● re-INVITE:用来改变参数;
● PRACK:与ACK作用相同,但又是用于临时响应;
● SUBSCRIBE:该方法用来向远端端点预定其状态变化的通知; ● NOTIFY:该方法发送消息以通知预定者它所预定的状态的变化; ● UPDATE:允许客户更新一个会话的参数而不影响该会话的当前状态;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库6.3 核心网技术- 固网软交换技术(9)在线全文阅读。
相关推荐: