朱晓民 王 晖 廖建新 陈俊亮
摘要:介绍了SIP协议的概貌,重点讨论了SIP功能实体和SIP消息,并对SDP协议的核心进行解释,研究了SIP协议及其将来的PINT协议在智能网与Internet互通环境下的应用,同时独创性地将Internet侧的实体与传统PSTN网侧的实体进行对比,将PINT实体与SIP实体进行对比,达到了智能网对PSTN和Internet统一控制的目的。
关键词:SIP 智能网 Internet 互通
SIP(Session Initiation Protocol协议最初是由IETF所属工作组MMUSIC制定的用于创建、修改和终止多方会话的应用层信令协议,这里所指的会话包括Internet多媒体会议和Internet电话呼叫等。SIP协议通过对SIP请求的代理和重定向功能来支持用户的移动性,同时要求用户及时登记他新的移动位置。SIP协议与任何会议控制协议无关,当然也与底层的传输层协议无关。由于SIP协议的简单易用、可扩展性及其在智能网与Internet互通领域的适用性,IETF的PINT工作组也以SIP协议为基础制定能满足智能网与Internet互通需求的PINT协议。因此,正确迅速地理解SIP协议对智能网与Internet互通的研究及开发至关重要。
SIP协议是一种基于客户-服务器方式的文本协议,用于建立、改变或拆除两方甚至多方的呼叫,但涉及的这些呼叫方都处在Internet中。SIP协议的语法和语义在很大程度上借鉴了简单邮件传输协议(SMTP)和超文本传输协议(HTTP),但不同的是SIP协议可以运行在TCP或UDP之上。当传输层是UDP时,SIP消息就可以以组播的方式传送,此时由SIP自身提供可靠传输机制。在SIP环境中一个会话的发起者并不一定是会话的成员。已经建立的会话可以通过组播协议SAP)或者电子邮件、新闻组、Web网页、轻量目录访问协议(LDAP)等形式向Internet用户发布。SIP协议从5个方面支持多媒体通信:用户定位决定用于通信的终端系统;用户终端能力决定将要使用的媒体类型和媒体参数;用户可用性决定被叫用户是否愿意加入会话;呼叫建立在主、被叫两方建立呼叫参数;呼叫处理包括呼叫转移和呼叫终止。
SIP协议的编址方式采用一种类似于mailto URL的形式,即user@host。其中,user部分是用户名或电话号码,host部分是一个域名或十进制数字形式的IP地址。这种地址称为SIP URL。当user部分是电话号码时,host部分就是Internet与PSTN网之间的网关。SIP URL可以指定一个单独的用户或是一个群体中的任一个人,甚至是整个群体。SIP URL在SIP消息的多个域中被采用,比如用来指示消息源的From域,指示当前目的地的Request-URI域,指示最终接收者的To域,以及指示重定向地址的Contact域。SIP URL可以嵌入Web页面或其它超链接中,在这种情况下SIP URL只调用INVITE请求。
SIP协议在安全性方面也作了考虑,涉及的内容包括加密和鉴权。加密又分端到端的和跳到跳的两种。鉴权方面参考了HTTP协议的实现方法。
SIP协议的默认端口号是5060,传输层默认协议是UDP。
为了理解的方便,这里给出对几个重要术语的解释。
①SIP事务(Transaction)。SIP事务是一对主、被叫之间的请求消息和对应的多个响应消息的集合。这些消息在4个域(Call-ID,CSeq,To,From)中具有相同的值。ACK请求通常紧跟在INVITE请求之后,但两者不属同一个SIP事务。如果底层采用TCP,同一SIP事务中的请求和响应消息都通过同一TCP连接传递。另外,源和目的都相同的几个SIP事务的消息既可以使用同一TCP连接,也可分别使用独立的TCP连接。
②临时响应(Provisional Response)和最终响应(Final Response)。服务器用临时响应向客户机指示请求正在处理过程中。有状态的代理服务器、用户代理服务器(UAS)、重定向服务器或者登记服务器如果不能在200 ms内发出最终响应就必须尽快发出一个临时响应,状态码为1xx,目的是防止客户机超时。无状态的代理服务器不能发出临时响应。最终响应标志着一个SIP事务的终止,状态码为2xx,3xx,4xx,5xx,6xx。
一、SIP功能实体
一个SIP系统只有两类实体:用户代理和网络服务器。
1.用户代理
用户代理是代表用户执行动作的终端系统,通常是同时包括用户代理客户机(UAC)和用户代理服务器。用户代理客户机用于发起一个呼叫请求而用户代理服务器用于响应一个呼叫请求。
2.网络服务器
网络服务器的主要功能是提供名字解析和用户定位。在大多数情况下呼叫发起方并不知道被叫方的IP地址或者主机名,只知道被叫的E-mail地址、电话号码或者别的信息。用户代理客户机就是根据这些信息决定利用哪个网络服务器来解析被叫的IP地址。很多情况下为了解析一个名字需要多个网络服务器的协同操作,这些服务器对于一次解析过程来说临时组成了一个链。决定链中下一个服务器地址的过程被称为下一跳路由。当然,像其它动态路由协议一样,SIP协议也提供了环路的检测机制和预防机制。网络服务器有代理服务器和重定向服务器两种。
(1)代理服务器
从本质上说,代理服务器是由一个协议客户机和一个协议服务器背靠背组成的。代理服务器的行为与HTTP代理服务器及SMTP消息传送代理(MTA)都很相像。代理服务器在接收到一个SIP请求消息之后,首先选择下一跳服务器,修改某些消息域的值,然后再将该消息转发出去。然而代理服务器并不知道下一跳服务器是代理服务器、重定向服务器还是用户代理服务器。一个SIP请求消息被用户代理客户机传送到用户代理服务器的途中可能会经过一系列的服务器,而且对应的响应消息通常是以相反的顺序依次穿过这些服务器。在下一跳路由过程中,一个代理服务器可能会认为有不止一个下一跳服务器能与被叫用户取得联系,在这种情况下,SIP协议允许该代理服务器复制接收到的请求消息,然后转发给这些下一跳服务器。
代理服务器可以是有状态的也可以是无状态的,即代理服务器不必维护一个会话或呼叫的状态,但有时可以维护一个SIP事务的状态。如果代理服务器复制了某个请求消息并同时向多个下一跳服务器发送,或代理服务器接受的是TCP连接就必须是有状态的。有状态的代理服务器就像一个虚拟的用户代理(用户代理客户机或用户代理服务器)。在收到请求消息时维护一个服务器端的状态机,在转发出一个请求时维护一个客户端的状态机,这一现象与PSTN网中的交换机很相似,即对于一次呼叫在每个交换机中都要维护一个发端基本呼叫状态模型O_BCSM和一个终端基本呼叫状态模型T_BCSM。交换机对主叫方一侧来说是服务器,而对被叫方一侧来说是客户机。但有状态的代理服务器也有与用户代理不同之处,如它在接收到2xx应答或ACK请求时并不在本地处理,而是继续转发出去。一个无状态的代理服务器将每个请求消息和响应消息都转发出去。
(2)重定向服务器
重定向服务器不像代理服务器那样在接收到SIP请求消息之后转发给下一个服务器,而是将下一服务器地址及其相关信息告诉用户代理客户机,再由用户代理客户机自己直接与下一个服务器通信。重定向服务器不会自主生成请求消息。当重定向服务器收到除CANCEL以外的请求消息时,要么返回一个状态码为3xx的最终响应(响应中包括可替代的地址列表),要么拒绝该请求消息。当收到CANCEL请求时应该返回状态码为2xx的响应消息。重定向服务器在一个SIP事务未结束之前应该维护当前状态。重定向服务器不负责检测消息前转的环路,这个工作由用户代理客户机完成。
(3)登记服务器和定位服务器
由于登记服务器通常不是独立存在的,在划分SIP网络服务器时并没有将它作为单独的一类。登记服务器只接收用户代理客户机发送的登记请求。登记服务器通常和代理服务器或重定向服务器处于同一物理实体中。
代理服务器或重定向服务器从定位服务器获取被叫当前可能的位置信息及管制信息。定位服务器可以在物理上与SIP网络服务器处于同一位置,也可以是单独配置的。网络服务器访问定位服务器的方式并不属于SIP协议的范畴,定位服务器也不能算是一种SIP服务器。
二、SIP消息
SIP消息分从客户端到服务器端的请求消息和从服务器端到客户端的响应消息。这两类消息都遵从RFC822定义的通用消息格式,即由起始行、一个或多个头域、一个空行和可选的消息体顺序构成。消息头又分为通用消息头、请求消息头、响应消息头和实体消息头。除了响应消息头外其余三类消息头都可以在请求消息中出现;同样,响应消息头只将请求消息头排除在外。实体消息头用于描述消息体。通用消息头中比较重要的有Call-ID,Contact,CSeq,From,To及Via等域。不管是请求消息还是响应消息,消息体对SIP协议来说都是透明的。
1.SIP请求
SIP请求消息的起始行由方法、Request-URI、SIP协议版本号等3部分顺序组成。三者之间用空格隔开。到目前为止,一共有6种方法。
(1)INVITE。INVITE方法邀请其它用户加入会话,相应的消息体是对会话的描述,通常是采用与SIP配套的SDP协议。描述的内容包括主叫可接收的媒体类型、可发送的媒体类型以及相关参数。INVITE也可用来修改一个已经存在的会话的参数。
(2)ACK。ACK是用户代理客户机在接收到INVITE的最终响应之后发出的确认,并且ACK只与INVITE捆绑使用。ACK请求消息也可包含消息体。
(3)BYE。当用户代理客户机准备释放一个呼叫时可以向服务器发送BYE请求。主被叫双方都可以发出这一请求,相当于电话系统中的挂机操作。
(4)CANCEL。CANCEL请求可以取消一个尚未完成的请求,此时要求CANCEL请求消息与将被取消的请求消息具有相同的Call-ID,To,From,CSeq域。用户代理客户机和代理服务器都可以发出CANCEL请求。虽然CANCEL请求可以取消除ACK和CANCEL以外的其它所有请求类型,但它通常只用来取消INVITE请求。
(5)REGISTER。用户代理客户机利用REGISTER请求消息将To域中的地址登记在定位服务器中。用户代理客户机在开机启动时将REGISTER请求以组播方式发送给公认的、代表所有SIP服务器的组播地址“sip.Mcast.Net”(224.0.1.75),但要保证该请求消息不越过Internet自治管理域的边界。另一种登记方法是,用户代理客户机在开机时只向预先配置好的一个登记服务器发送登记请求。登记服务器中的每个登记记录都有一个对应的有效期,一旦到期,记录就被删除。另外,登记请求需要鉴权。
(6)OPTIONS。OPTIONS请求用于查询用户代理服务器的能力。用户代理服务器在响应消息的Allow域中指明它能支持的方法。代理服务器和重定向服务器只将该请求消息前转而不指示它们自己的能力。
2.SIP响应
SIP响应消息的起始行由SIP协议版本号、状态码和用自然语言描述的原因组成。状态码由3个阿拉伯数字组成,用于计算机判断具体响应的结果,原因部分则是出于帮助SIP用户更好地理解响应消息的目的而设计的。目前只定义了6类状态码,由第一位数字来区分,今后还可以很方便地进行扩展。
(1) 1xx:提示信息,表示请求已收到,正在处理。
(2) 2xx:请求被成功接收并理解。
(3) 3xx:重定向,为完成请求功能需进一步执行动作。
(4) 4xx:客户端错误,如请求消息语法错,服务器不能完成操作。
(5) 5xx:服务器端错误,服务器不能处理明显合法的请求。
(6) 6xx:全局错误,请求不能在任何服务器中处理。
3.SIP消息体
在所有6种请求消息中,BYE请求不能包含消息体,REGISTER请求的消息体的作用还有待进一步研究,而ACK,INVITE和OPTIONS请求的消息体通常是对会话的描述。对于响应消息,请求方法和响应状态码决定了消息体的类型和对消息体的理解。所有的响应消息都可以包含消息体。
虽然SIP并没有强制使用SDP来描述消息体,但SDP协议是为SIP量身定做的,因此在描述消息体方面SDP仍是第一选择。SDP仅仅规定了会话描述的格式,不关心媒体类型参数等的协商,而且在制定过程中尽量向通用性努力,因此它可以被SIP,SAP,RTSP,HTTP等应用协议所采纳。
SDP包括会话名称和目的、会话活跃时间、组成会话的媒体及接收媒体的相关信息(地址、端口、格式等)。SDP描述由许多文本行组成,文本行的格式为,<类型>=<值>。<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。合法的类型和顺序如下:
① v=(协议版本);
② o=(会话创建者和会话标识);
③ s=(会话名称);
④ i=*(会话信息);
⑤ u=*(描述的URI);
⑥ e=*(Email地址);
⑦ p=*(电话号码);
⑧ c=*(连接信息,如果在所有媒体中都已包含则此处不需要);
⑨ b=*(带宽信息);
⑩ 一个或多个时间描述;
z=*(时区调整);
k=*(密钥);
a=*(零个或多个会话属性行);
零个或多个媒体描述。
其中时间描述如下:
t=(会话活跃时间);
r=*(零个或多个重复时间)。
媒体描述如下:
m=(媒体名称和传输地址);
i=*(媒体主题);
c=*(连接信息,如果在总体描述中已包含则此处是可选的);
b=*(带宽信息);
k=*(密钥);
a=*(零个或多个媒体属性行)。
以上文本行的顺序是固定的,有利于检错以及简化解析器的设计,“*”表示该<类型>为可选项。表示<类型>的字母集合不可扩展,扩展任务由属性行“a=”来实现。
三、在智能网与Internet互通环境下的应用
IETF的PINT工作组以SIP协议为基础来制定PINT协议,实现PINT业务。PINT只讨论Internet侧发起的PSTN业务,PSTN与Internet之间不需要建立承载关系,也即PINT不关心IP电话的实现,而且两网之间只交换业务控制信令,不交换呼叫控制信令。与PINT协议不同的是,SIP协议交互的最终目的是建立承载连接。在图1所示的智能网与Internet互通环境中,粗实线表示承载关系,细实线表示信令关系,虚线表示管理关系,为强调区别用PINT和SIP分别标识业务控制层和呼叫/承载控制层的协议实体。IF1,IF2和IF3等三个接口采用PINT协议,业务控制网关功能SC GF应实现PINT客户机的功能。IF4和IF5两个接口采用SIP协议,呼叫/承载控制网关功能C/B GF)应实现SIP用户代理的功能。为保证PSTN网国标规定的各种智能业务向IP网用户的透明提供,需要在SIP代理服务器中模拟业务交换功能的行为,维护一个基本呼叫状态模型BCSM,也就是说这个代理服务器必须是有状态的。IF6接口的应用层协议是类INAP协议,底层协议是TCP/IP协议。SC GF应实现类似SCF的功能,可认为SCF是PSTN网中的业务控制功能实体而SC GF是Internet中的业务控制功能实体。PINT客户机既可以放在Web服务器中以实现点击拨号、点击发传真等业务,也可以直接安装在Internet用户的终端上以提高业务灵活性。IF7接口显然采用HTTP协议。正由于PINT协议与SIP协议的相似性,PINT服务器可与SIP服务器类比,PINT客户机也可与SIP用户代理类比。图1中没有标出登记服务器和定位服务器,这两个服务器都可以配置在SIP的代理服务器中。智能网一侧的其它实体被SC GF和C/B GF所屏蔽,对PINT协议和SIP协议都是不可见的。
智能网与Internet互通环境在ITU-T的CS4文稿中SIP协议用H.323协议来代替,此时代理服务器的位置应该是H.323关守GateKeeper,C/B GF是H.323网关,SIP用户代理则被H.323终端取代,但实际上SIP协议是H.323协议的简化,两者要实现的功能从根本上说是相同的。
|