2008年12月22日星期一

JSP上传和下载文件

From Gossip@caterpillar


使用浏览器上传文件时,是使用multipart/form-data编码,然而Servlet容器并不会自动帮我们处理编码,而必须由程式设计人员自行处理,在这个部份,我们可以使用Oreilly所提供的上传套件MultiPartRequest,您可以至以下的网址下载,文件是cos- 05Nov2002.zip:

http://www.servlets.com/cos/index.html


解开zip文件之后,在lib目录下可以找到cos.jar,将它复制到您的Web应用程式的WEB-INF/lib下就可以了。基本上, Oreilly的MultiPartRequest相当的容易使用,它可以同时处理多个文件的上传,并且提供多个方法可以让您取得上传文件的相关资讯。

这里提供一个简单的例子,首先撰写上传的表单:

  • form.htm
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type"
content="text/html; charset=GB2312">
</head>
<body>
<b>文件上传</b></font></p>

<form name="UploadForm"
enctype="multipart/form-data"
method="post" action="upload.jsp">
<input type="file" name="File1" size="20" maxlength="20">
<br>
<input type="file" name="File2" size="20" maxlength="20">
<br>
<input type="submit"value="上传">
</form>

</body>
</html>


这里示范两个文件的上传,表单的enctype必须设定为multipart/form-data,而上传方法是post,表单元件的输入类型是 file。当然,上传的文件数在实际应用时,是可以用JavaScript等方法來动态进行选择的。

上传的处理动作写在upload.jsp中: 

  • upload.jsp
<%@page import="com.oreilly.servlet.MultipartRequest" %>
<%
String saveDirectory = "/home/caterpillar/files/";
// 限制上傳之檔案大小為 5 MB
int maxPostSize = 5 * 1024 * 1024 ;
MultipartRequest multi = new MultipartRequest(request ,
saveDirectory , maxPostSize, "MS950");
out.println("檔案上傳OK");
%>


注意到程式中import了com.oreilly.servlet.MultipartRequest, MultipartRequest可以限制文件上传的大小,最后一个参数是上传文件名称的编码,如果不设定的话,预设是ISO-8859-1,为了支持繁体中文文件名,程式中设定为MS950,如果要支持简体中文,可以设定为GB2312。

基本上您只要建立MultipartRequest物件就完成了文件上传的处理动作,如果要额外取得文件信息,您可以从 MultipartRequest物件取得,例如getFileNames()、getContentType()、getFile()等等, getFileNames()所取得的是Enumeration类型的值,可以这样使用:

Enumeration filenames = multi.getFileNames();  
while(filenames.hasMoreElements()) {  
    String filename = (String) filenames.nextElement();   
    out.println("上传了文件" + filename + "<br>"); 

 
其它有关于MultipartRequest的说明,您可以参考下载的zip文件中的说明。 


2008年11月18日星期二

Ubuntu network install - step by step

必要条件    -    Windows系统,C盘为fat32格式

 

步骤    -

    1. 下载网络安装的启动加载文件(initrd.gz和linus) 存放在C盘根目录下

        http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz

        http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux

 

        注意下载后linux会自动被添加.txt的扩展名,要把它去掉。

 

    2. 下载GRUB FOR DOS,解压后的文件放到C:\boot文件夹下

        http://www.linuxeden.com/download/data/soft/1383.html

 

    3. 拷贝C:\boot下的menu.lst和grldr两个文件到C盘根目录下

 

    4. 修改C盘根目录下的boot.ini,在其最后添加一行如下

        C:\GRLDR="Start GRUB FOR DOS"

 

    5. 重启,选择GRUB。按C进入GRUB的命令行模式。

 

    6. 依次执行下列命令

        root (hd0,0)

        kernel /linux root=/dev/ram ramdisk_size=250000,devfs=mount,dall vga=771

        initrd /initrd.gz

        boot

 

即进入Ubuntu安装程序,依次按提示操作即可。

2008年11月2日星期日

WIN/CAMEL- introduction

IS-41

IS-41, also known as ANSI-41 since it is a standard defined by ANSI, is a specification for identifying and authenticating users, and routing calls on mobile phone networks based on MPS (analog), IS-136 (TDMA) and CDMA technologies. The standard also defines how users are identified, and calls are routed when roaming across different networks. GSM and WCDMA networks use a different standard known as MAP for the same purpose.

WIN: Wireless Intelligent Network

Wireless Intelligent Network (WIN) refers to a set of advanced services provided on a wireless network such as Prepaid, LNP, etc.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
无线智能网(WIN)是由3GPP2标准化的为CDMA网络服务的智能网系统,在业务的驱动下,主要经历了WIN Phase 1(IS771),PPC(IS826),WIN Phase 2(IS848),WIN Phase 3(IS843)四个阶段。
  • 概念模型和体系结构
无线智能网采用与固定智能网相同的概念模型来描述它的体系结构,这种分层的概念模型可以使我们对无线智能网有更好的理解。对于无线智能网来说,业务平面和总功能平面都与固定智能网相同,而最能体现无线智能网特点的是分布功能平面和物理平面。

    • 无线智能网的分布功能平面
无线智能网的分布功能平面如图1所示,它是基于固定智能网能力集2(即ITU-T Q.1224 CS-2)定义的,除了原有固定智能网的功能实体外,还增加了移动所特有的一些功能实体,如位置登记功能(LRF)、鉴权控制功能(ACF)、移动台接入控制功能(MACF)、无线接入控制功能(RACF)、无线控制功能(RCF)、无线终端功能(RTF)。

  在上述分布功能平面图中,CCF,SSF,SCF,SRF,SDF,SMF,SMAF,SCEF是智能网系统中主要的功能实体。CCF是呼叫控制功能,负责处理所有呼叫,包括识别智能业务,接续呼叫等。SSF是业务交换功能,负责处理CCF和SCF之间的通信,即接收CCF发来的智能业务标识,作相应的处理后转发给SCF,并且执行SCF返回的命令。SCF是业务控制功能,它是智能网的核心,负责业务逻辑的执行,通过标准的接口与SSF,SRF,SDF通信,实现完整的智能业务呼叫。SRF是专用资源功能,负责向智能网用户提供放音、收号等专用资源。SDF是业务数据功能,负责存储智能网的业务数据和用户数据。SMF是业务管理功能,负责智能网业务管理和用户管理。SMAF是业务管理接入功能,它是操作员接入SMF的接口。SCEF是业务生成环境功能,完成智能业务的生成、验证和测试功能。

  而LRF,ACF,MACF,RACF,RCF,RTF是新增加的移动网络所特有的功能实体,分别提供位置登记功能、鉴权控制功能、移动台接入控制功能、无线接入控制功能、无线控制功能、无线终端功能。

    • 无线智能网的物理平面
分布功能平面的功能实体最终都是由物理平面的物理实体来实现的,在每个物理实体中可以包括一个或多个功能实体。无线智能网物理平面体系结构如图2所示。

  在上述WIN系统的物理平面中,业务交换点(SSP)/移动交换机(MSC)/拜访位置寄存器(VLR)负责处理发至或来自用户的呼叫信息,触发WIN业务并与SCP进行通信。业务控制点(SCP)主要完成SSP触发的WIN业务的执行和控制、WIN业务数据和用户数据的存储及访问。业务数据点(SDP)/充值中心负责存储并提供WIN有关的业务数据和用户数据,充值中心用户提供与某些业务(如预付费)有关的充值卡数据。智能外设(IP)按照SCP的指示为WIN业务提供放音收号等专用资源功能。业务管理点(SMP)主要完成WIN业务的管理,包括业务逻辑管理、业务数据管理、用户数据管理等。业务生成环境点(SCEP)主要完成WIN业务的定义、开发和测试,通过SMP加载到SCP。SCEP是智能网中较关键的节点,是智能网快速、灵活、方便地实现新业务的重要保证。业务管理接入点(SMAP)完成业务管理的接入功能

  无线智能网发展到其他阶段,例如PPC和第二阶段,体系结构本身并没有发生变化,只是提供的业务种类发生了变化。而到了第三阶段,由于要提供定位业务,体系结构发生变化,需要在上述体系结构的基础上,引入如定位确定实体(PDE)和移动定位中心(MPC)等与定位业务相关的实体。

  • 业务和协议

无线智能网是受业务驱动而分阶段发展的,第一阶段基于IS771协议,支持来话呼叫筛选、主叫名字显示、语音控制等智能业务

  IS771作为第一个无线智能网协议,于1999年5月正式发布。从技术上来说,这个阶段的无线智能网还有一些不够完善的地方,但它定义了WIN的基本概念、框架结构、基本呼叫模型、触发机制及对检测点处理的描述。同时,提供了一种系统间的操作规范,使无线用户漫游后仍能使用智能网的能力。它在IS41D的基础上,扩充了触发点,并在SSP中增加了DP检出、PIC迁移功能以及相应的过程处理。根据北美运营商的需求定义了来话呼叫筛选、主叫名字显示、语音控制等业务的业务特征和消息流程,并增加了实现这些业务能力所需要的操作和参数,还扩充了原有IS41中某些参数的定义。

  来话筛选业务可以为用户提供选择路由、屏蔽某些来话呼叫的能力,系统可以对指定的呼叫进行阻止或允许其呼叫,或者指定替换路由,将呼叫前转到语音信箱或另一个电话号码或特定的录音通知。主叫名字显示业务可以向被叫用户显示主叫用户的名字,呼叫接续时,可以向被叫用户显示主叫用户的名字。语音控制业务是指采用基于网络的语音识别技术,允许用户采用语音命令的方式对语音和特性进行控制,包括四种语音控制的业务,即语音控制的拨号、语音控制的业务控制、基于语音的用户识别和语音到文本的转换。

针对上述几种业务的需求,IS771在IS41D基本MAP协议的基础上增加了14个操作,分别用于处理智能业务相关的呼叫处理、放音收号和数据库操作。例如,服务申请、分析信息、T忙、T无应答等与呼叫处理相关的操作,寻找资源、指示申请、连接资源、SRF指示等与放音收号相关的操作,搜索、修改两个与数据库相关的操作。

  IS771还对原有41D中某些操作增加了一些参数,例如业务申请、位置申请、始发申请、资格申请、登记通知、路由申请等。另外,IS771根据第一阶段业务的需要,对于以上增加或修改的操作,增加了一些参数,例如目的地地址、时间日期偏置、触发地址清单、显示文本等与呼叫处理操作相关的参数,执行脚本、专用资源、脚本参量、脚本结果等与放音收号操作相关的参数,业务ID、改变、数据接入单元、数据ID、数据库键、数据结果、数据值、修改申请清单、修改结果清单等与数据库操作相关的参数。IS771还扩充了部分参数的定义,增加了WIN业务相关的接入拒绝原因,扩充定义了提供WIN第一阶段业务时系统所支持的触发器,并在原有用户属性清单的基础上增加了触发地址清单参数,保证无线智能网业务的提供

  在无线智能网第一阶段之后,3GPP2针对预付费业务提出并定义了IS826标准。虽然它是为提供预付费业务而专门提出的,并且介于第一阶段和第二阶段之间,但IS826也是无线智能网非常重要的一个阶段。由于引入了实时计费有关的触发器以及预付费这种良好的业务形式,使得无线智能网技术在我国的CDMA网络中获得了广泛的应用,并且在我国的标准体系中,将IS826也归为无线智能网的第一阶段。

  基于IS826的预付费业务是用户先付费后使用的一种业务形式,用户通过预先交费或充值等方式,在系统中建立账户,注入一定的资金,作为自己的通话费用。在呼叫建立时,系统根据用户账户上的余额决定接收或拒绝呼叫。在呼叫过程中,进行实时计费,并在计费结束后从用户账户上扣除通话费用。当用户余额不足时,切断呼叫并播放相应的录音通知。

  针对预付费业务特殊的计费要求,IS826在IS41D,IS771标准的基础上,增加了O_Answer,O_Disconnect,T_Answer和T_Disconnect等与呼叫处理过程相关的触发点,使智能网系统可以根据呼叫的具体时间、时长、主被叫等信息按照业务要求实时计费。并描述了各种特征下的典型信令流程,定义了相关的消息和参数。

  在第一阶段IS771所定义的操作基础上,IS826增加了处理预付费业务所需要的操作,包括O应答、O拆线、T应答、T拆线、呼叫控制指示五个与呼叫处理相关的操作,以及批量拆线、呼叫恢复报告、不可靠的呼叫数据三个与设备故障相关的操作,以保证故障情况下实时计费的正确性。

  在这些操作的支持下,预付费业务可以实时并且准确地对用户的费用进行计算。O应答和T应答分别作为用户作主叫和被叫时计费的起始点,而O拆线和T拆线则作为用户作主叫和被叫时计费的结束点,并且在呼叫接续前、用户通话过程中、用户余额将要用尽时,使用呼叫控制指示操作来检查呼叫接续情况、监视呼叫状态、通知用户余额将要用尽或者切断呼叫。而当SSP或SCP设备发生故障时,为了保证对预付费用户扣费的正确性,需要采取一定的措施来修正用户的费用。例如,发送不可靠的呼叫数据、呼叫恢复报告、批量拆线操作,报告故障实体、故障时间和呼叫标识等信息,以修正用户的费用和话单

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( 补充)

WIN (IS-41, IS826, ....) [TDMA, CDMA]

CAMEL [GSM, WCDMA]

对应于CDMA和GSM两种移动网络的智能网功能模块分别是无线智能网WIN(Wireless Intelligent Network)和移动智能网―移动网增强逻辑的客户化应用CAMEL (Customised Applications for Mobile Network Enhanced Logic)。北美CDMA移动通信系统采用的是ANSI―41D协议,为了支持智能业务,在ANSI41D协议的信令结构和信令流程的基础上定义了一系列无线智能网(WIN)协议,分别是IS―771、IS―826和IS―848,这些协议最终将整合到ANSI―41E协议中,从而使ANSI―41E成为一个完全基于智能网的核心网络协议。在北美CDMA无线智能网发展的同时,ETSI标准化组织也在推动着GSM移动网络智能化的发展,研究和制定了为GSM移动用户提供CAMEL业务的移动智能网系列协议。CAMEL是一种业务,它采用智能网业务控制功能,提供一种机制,使GSM网络能够提供独立于服务网络的业务。

CDMA首先是在美国提出和发展的,CDMA无线智能网系统的WIN协议是由ANSI标准化组织制定的。
CAMEL各个阶段的接口规范都是以ITU―T的接口协议为基础,CAMEL Phase I和CAMEL Phase II的接口规范是ITU―T CS―1接口协议的子集,只是在CAMEL的接口协议中增加了GSM移动用户所特有的一些参数。对于CAMEL Phase I技术规范所规定的功能较少,在CAEML应用部分CAP (CAMEL Application Part) 中只包含7个操作,没有用户交互等功能;CAMEL Phase II技术规范所包含的内容与ITU―T的CS―1内容大体相同,只是缺少一些话务量管理和业务量管理功能。

WIN协议对业务信令流程规定得非常详细,而CAMEL系统规范没有对业务流程进行规定,只是定义了业务的含义和业务特征。WIN协议是对MAP协议的补充,所以它和MAP一样同为TCAP的一个用户;而CAMEL协议则不同,CAMEL和MAP分别为TCAP的两个不同的用户。
CDMA无线智能网中有两个非常重要的基本概念,即DP点和触发器。DP点是呼叫过程中的状态,这些状态由协议定义,对业务逻辑开放。也就是说,业务逻辑可以在DP点对呼叫进行控制,要求SSP报告DP点的到达,并通过消息返回给SSP一组操作,决定呼叫进程的下一步走向。业务逻辑在每个DP点上定义了一组触发器,DP点的任何一个触发器都满足表示该DP点被检出。DP点是静态的,也就是说呼叫进程运行到DP点时必须判断是否需要检出,而触发器则可以动态配置,使DP点的检出条件多样和灵活。


CDMA无线智能网和GSM移动智能网的触发机制类似,两者都是通过静态配置DP点触发智能呼叫,当用户发起呼叫时,遇到配置的DP点,由SSP向SCP上报智能呼叫。当移动用户漫游到一个新的位置区时,需要进行位置更新,HLR通过此过程将用户的签约数据传送到VLR。当移动用户终呼时,GMSC向HLR发送路由请求消息,HLR在响应中将用户签约信息带回GMSC,用于触发智能业务。


WIN的每个DP点都有许多触发器,而CAMEL在DP点没有触发器的概念,每一个DP点为一个判断条件。在WIN中由SCP控制呼叫,但是触发器基本由HLR下发,并且大都为静态触发器,而对于CAMEL来说,一旦SSP触发一次后,所有后续DP点都由SCP动态装配。在WIN中,所有的智能业务都由SCP判断,SSP的能力相对而言较弱,只是把触发器上报上来,没有业务键概念,具体的业务种类由SCP分析确定并向SSP指示业务信息;而在CAMEL中,SSP则需要对用户CSI信息进行分析,并根据业务键来确定业务种类,向SCP发出业务请求。对于WIN,下发到SSP的用户签约触发数据就是属于各个DP点的触发器(包含SCP地址),而对于CAMEL,SSP需要知道用户的签约触发数据,包含SCP地址、业务键和触发检测点等信息。

2008年10月29日星期三

C++ - howto initialize class member


/* discuss how to initialize
static and const/& member in C++ class*/

// const member must be initialized in member-initilization list
// static member must be initialized in source file globally


类对象的构造顺序是这样的:
1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算


About "member-initialization list" and const member

C++初始化类的成员,不但可以用构造函数(constructor)完成,而且可以用初始化类成员列表来完成。
使用初始化列表有两个原因:

1. 必须这样做:

如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。

class ABC
{
public:
       ABC(
int x,int y,int z);
private:
       
int a;
       
int b;
       
int c;
}
;
class MyClass
{
public:
       MyClass():abc(
1,2,3){}
private:
       ABC abc;
}
;

        因为ABC有了显式的带参数的构造函数,那么它是无法依靠编译器生成无参构造函数的,所以没有三个int型数据,就无法创建ABC的对象。
        ABC类对象是MyClass的成员,想要初始化这个对象abc,那就只能用成员初始化列表,没有其他办法将参数传递给ABC类构造函数。

        另一种情况是这样的: 当类成员中含有一个const对象或者一个引用时,它们也必须要通过成员初始化列表进行初始化,因为这两种对象要在声明后马上初始化,而在构造函数中做的是对他们的赋值,这样是不被允许的

2. 效率要求这样做:

       类对象的构造顺序显示,进入构造函数体后,进行的是计算,是对他们的赋值操作,显然,赋值和初始化是不同的,这样就体现出了效率差异,
如果不用成员初始化列表,那么类对自己的类成员分别进行的是一次隐式的默认构造函数的调用,和一次复制操作符的调用,如果是类对象,这样做效率就得不到保障

注意:构造函数需要初始化的数据成员,不论是否显示的出现在构造函数的成员初始化列表中,都会在该处完成初始化,并且初始化的顺序和其在声明时的顺序是一致的,与列表的先后顺序无关,所以要特别注意,保证两者顺序一致才能真正保证其效率。初始化列表会在相应构造函数正式调用前被调用

为了说明清楚,假设有这样一个类:
class foo{
    private :
    int a, b;
};

(1)  foo(){}和foo(int i = 0){}都被认为是默认构造函数,因为后者是默认参数。两者不能同时出现。
(2)  初始化列表的初始化顺序不是按照列表的顺序,而是按照变量声明的顺序。比如foo里面,a在b之前,             那么会先构造a再构造b。所以无论 foo():a(b + 1), b(2){}还是foo():b(2),a(b+1){}都不会让a得到期望的值。如果先声明b再声明a则会更好。
(3)  初始化列表能够对const成员初始化。比如foo里面有一个int const c;则foo(int x) : c(x){}可以让c值赋成x。不过需要注意的是,c必须在每个构造函数(如果有多个)都有值。
(4)  
在继承里面,只有初始化列表可以构造父类的private成员。比如说
class child : public foo{
}

foo里面的构造函数是这样写的:foo (int x) { a = x; }.
而在child里面写child(int x) { foo(x); }是通过不了编译的。只有把父类初始化改为foo(int x) : a(x){},而子类构造写作child (int x) : foo(x){}才可以。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

class A

{
  public:
    int member_var; //成员变量
    A();            //构造函数
}

A::A():member_var(0)
{
}

A::A()
{
   member_var=1;
}

第一种方法是真正的初始化(initialization), 而在构造函数内实现的“=”操作其实是赋值(assign)。
区别大概如下:
  1. 普通变量编译器都会默认的初始化。它们既能初始化,也能被赋值的;而常量(const)只能被初始化,不能赋值,否则与变量就无区别了。所以常量成员(const member)只能用成员初始化列表来完成他们的“初始化”,而不能在构造函数内为他们“赋值”。
  2. 我们知道类的对象的初始化其实就是调用他的构造函数完成,如果没有写构造函数,编译器会为你默认生成一个。如果你自定义了带参数的构造函数,那么编译器将不生成默认构造函数。这样这个类的对象的初始化必须有参数。如果这样的类的对象来做另外某个类的成员,那么为了初始化这个成员,你必须为这个类的对象的构造函数传递一个参数。同样,如果你在包含它的这个类的构造函数里用“=”,其实是为这个对象“赋值”而非“初始化”它。所以一个类里的所有构造函数都是有参数的,那么这样的类如果做为别的类的成员变量,你必须显式的初始化它,只能通过成员初始化列表来完成初始化。
const 成员和引用类型的成员都是必须在定义时初始化的,一般情况下,作为局部常量/变量使用的时候,定义和初始化可以一起进行。但是在类定义中不可行。因为定义类,实际是在申明一个对象的类型,是不可以直接在定义语句后面使用 = 来进行初始化的。因此,类构造提供了一个初始化列表来对需要初始化的成员进行初始化,


About static member

通常静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域操作符来指出静态成员所属的类。但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!
比如:

/* (#) Test.h */
class Test {
public:
    // 申明int 型的MASK 常量
    static const int MASK;
};

/* (#) Test.cpp */
#include "Test.h"

// 定义Test::MASK 常量,注意这里不需要static 关键字
const int Test::MASK = 0xFFFF;


static const 定义的常量是全局的,对该类的每一个实例(对象)甚至在全局范围都有效,而且一致。
与全局对象一样对于静态数据成员在程序中也只能提供一个定义,这意味着静态数据成员的初始化不应该被放在头文件中而应该放在含有类的非inline函数定义的文件中。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


A useful blog about this topic:

2008年5月29日星期四

SoftSwitch

(转载)

NGN是三网融合的产物。在向NGN演进的过程中,网络发展的趋势是统一的IP核心网分层结构开放接口。软交换体系是目前备受推崇的一种NGN演进方案,是面向网络融合的新一代多媒体业务整体解决方案。它通过优化网络结构不但实现了网络的融合,更重要的是实现了业务的融合。软交换定位于NGN的控制层,是NGN的核心技术。

1. 统一的IP核心网

NGN采用统一的IP核心网结构,从上到下由业务层控制层媒体层接入层四层构成。应用服务器位于业务层,负责提供增值业务和管理功能;软交换在控制层,负责完成各种呼叫控制和相应业务处理信息的传送,是NGN的核心控制设备;网关在媒体层,负责用户送来的信息与IP网上传送格式的转换;电信网(有线/无线)、有线电视网在接入层,都将作为接入网存在。

软交换是NGN的核心设备,它独立于接入网,主要完成呼叫控制、资源分配、协议处理、路由、认证、计费等功能,同时可以向用户提供现有电路交换机所能提供的所有业务,并向第三方提供可编程能力。软交换是SCN和IP网协调的中心,通过对各种网关(如:SG和MG)的控制实现不同网络之间的业务层的融合。

2. 分层结构

传统网关集多种功能于一身,过于复杂,导致了可扩展性差且没有故障保障机制,于是业界提出了网关分解的概念。传统的网关被分解成三部分:媒体网关(MG)负责媒体变换以及SCN和IP两侧通路的连接;信令网关(SG)负责信令转换,只是进行SCN信令的底层转换,即从TDM电路方式转换成IP网传送方式,并不改变其应用层消息;软交换负责根据收到的信令,控制媒体网关的连接建立和释放。软交换才真正对信令消息进行分析和处理,并进行应用层的互通变换。软交换还控制资源,负责认证和网络安全,是整个系统的控制者。软交换又称为呼叫代理或媒体网关控制器(MGC)

网关分离导致出现了新的协议标准。软交换和MG之间的接口A采用Megaco(又称为H.248)或MGCP,软交换和SG之间的接口B采用Sigtran。软交换中有Megaco协议栈和Sigtran协议栈;MG中有Megaco协议栈;SG中IP侧是与软交换中一致的Sigtran协议栈,SCN侧是SS7协议栈。

3. 开放接口

软交换是开放、分层的体系结构,层间有开放的API接口。这样,某一层的改变,不会影响其他层。一方面,软交换与下层的接口是协议API,融合了IP网中的多种协议。如:SIP、H.323、Megaco、ISUP/IP等。另一方面,软交换与上层的接口是应用API,对于业务的提供者和第三方开发者是可编程的。软交换真正实现了业务与呼叫控制分离以及呼叫控制与承载业务分离。 目前,国际上关于开放API的研究主要有Parlay API、JAIN API和OSA。 Parlay API属于应用API; JAIN API包括应用API和协议API(SIP、MGCP、H.323、TCAP、ISUP、INAP/AIN、MAP等); OSA属于应用API,侧重于移动终端的服务。 最新的研究趋势表明,三者正趋于融合。

------------------------------------------------------------------------------------------------------------------------------------

(转载) 在软交换的体系中,通过信令网关进行SCN侧No.7信令和IP侧的SIGTRAN适配层协议的转换,实现No.7信令在IP网的传送,从而达到No.7信令网与IP网的互通。它主要的功能可以概括为对在SCN(电路交换网)中传输的信令进行适配,以便使信令能够以分组的形式传送到MGC,反之对来自MGC的信令进行转换,将以IP分组形式发送到SG的信令进行转换,以便在SCN中进行传输。 1. SS7与IP互通的方式 SS7与IP互通主要有两种方式,相应地SG分别作为信令转发点和信令代理点使用。 (1)窄带No.7信令网与基于IP的No.7信令网的互通:这种互通方式是把IP网中节点看作 No.7信令网的一个节点,分配No.7信令点编码,只是No.7信令链路层与窄带No.7信令链路层不同,采用的是基于IP的链路层。IP网中的节点具有MTP3的功能。此时的信令网关作为一个信令转发点(STP),其好处在于对于SG的组网方式比较简单,SG只作为一个链路层的中继(无MTP3)或信令转接点(有MTP3),对SG在SS7侧和IP侧的路由寻址能力的要求都不高。但其缺点在于虽然组网方式简单,且降低了SG功能要求和复杂度,却是以增加IP网的信令节点的复杂度为代价的。 No.7信令与IP信令的互通:此种互通方式是在IP网中传送信令但不再采用No.7信令网的方式传递信令,而是在SG完成MTP3与IP地址的对应关系,由IP和它的适配层完成对高层信令的传递。在这种情况下,IP网中的节点不具有MTP3的功能,所以需要用到M3UA协议。在这种互通方式中,IP网中的信令节点可以分配独立的信令点编码,也可以不必为每个IP网中的信令节点分配信令点编码,即可以用SG的信令点编码来代表IP域中的所代理的信令节点,并由SG根据相关的路由关键词来完成对消息的选路。此时的信令网关作为一个信令代理。 上面两种互通方式的根本区别就在于IP网中的节点是否具有MTP3的功能,如果具有MTP3的功能,则此节点就可以看作是No.7信令网中的一个节点。虽然存在着两种互通方式,但都是通过SG来完成的。 2. 信令网关组网方式

http://tech.techweb.com.cn/archiver/tid-215035.html


NGN/软交换协议归类

  • 国际软交换协会(ISC:InternationaL Softswitch Consortium)已制定了一些相关的软交换标准草案,并颁布了一些标准,目前ISC、ITU-T、IETF等国际组织正在合作制订并完善相关的协议和标准。

  • 呼叫控制协议:包括承载无关呼叫控制(BICC);SIP-T;H.323;ISUP、TUP;Q.931、QSIG。
  • 传输控制协议:包括 SIGTRAN;流控制传输协议(SCTP);TCAP、SCCP;IUA、M3UA;MTP3;RTP、RTCP;TCP、UDP;IPATM
  • 业务应用协议:包括ParLay;JAIN;INAP;MAP;LDAP;RADIUS。

ParLay协议是ParLay工作组制定、由欧洲电信标准委员会(ETSI)发布的开放业务接入的应用编程接口

  • 维护管理协议:包括SNMP和公共开放策略服务(COPS)协议。



应用协议

信令传输协议

SIGTRAN

M3UA/M2UA/SCTP/IP

H.248

UDP/IPSCTP/IPTCP/IP

MGCP

UDP/IP

MGCPH.248

UDP/IP

MGCP

UDP/IP

MGCP

UDP/IP

SIP

UDP/IP

H.323

UDP/IPTCP/IP

SIP

UDP/IP

SS7

MTP

SIP

UDP/IP

H.323

UDP/IP、TCP/IP

MML或CORBA

-

FTPFTAM

TCP/IP

  • 以SIP协议为核心的互连构架
  • CSCF类似电路域MSC的信令控制部分
  • 外挂AS
  • IMS独立于各种接入网

  • HSS归属用户服务器 ,保存用户信息
  • AppServer实现各种增值服务
  • MGCF控制IMS媒体网关
  • BGCF具有支持PSTN与PS域之间的呼叫的功能
  • MRFC控制MRFP的媒体流资源
 
IMS和软交换的体系异同 :
  • 基本技术都是基于IP分组网络,都实现了控制与承载的分离;大部分的协议都是相似或者完全相同的;许多网关设备和终端设备甚至是可以通用的
  • 总体区别主要是在网络构架上,软交换体系侧重于主从控制(MGC/MG),需利用和继承PSTN的接入网络,以方便过渡。而IMS可在系统/终端侧统一采用基于IP承载网的SIP协议,体现出与接入网的独立性,并天生支持移动性管理并且具有一定的QoS保障机制 。

IMS和SS的具体区别: 
  • 在软交换控制与承载分离的基础上,IMS进一步实现了呼叫控制层和业务控制层的功能细分;呼叫会话控制功能(CSCF)、媒体网关控制功能(MGCF)、接入网关控制功能(AGCF)、媒体资源控制功能(MRCF)、出口网关控制功能(BGCF)。位于核心的CSCF又细化为代理CSCF(P-CSCF)、服务CSCF(S-CSCF)、查询CSCF(I-CSCF)。

  • 基本呼叫和PSTN类的补充业务逻辑集成在SS自身实现 , IMS本身不再集成任何业务逻辑 ,而采用了统一的业务控制ISC接口与外挂的应用服务器互连,实现业务应用的独立性和完全互通性。PSTN呼叫由模拟子系统(PES/PSS)应用服务器提供


窄带/宽带软交换概念:
  • 软交换概念从固网中提出,是下一代网络中的呼叫、会话控制技术,一般分为窄带软交换和宽带软交换。窄带软交换主要用于窄带的话音业务,宽带软交换主要用于宽带多媒体业务。
  • 在固网中,窄带软交换技术是指软交换机采用H.248协议或MGCP协议对各种网关进行控制,包括中继网关TG(Trunk Gateway)、接入网关AG(Access Gateway)和综合接入设备IAD(integrate Access Device),它们分别负责用户接入和与PSTN互通;
  • WCDMA移动网络中,窄带软交换技术是指R4版本中定义的MSC Server采用扩展的H.248对媒体网关MGW进行控制。
  • 在固网中,宽带软交换技术是指各种SIP(Session Initiated Protocol,会话初始协议)服务器根据SIP协议进行呼叫控制的技术。
  • 在WCDMA移动网中,宽带软交换是指IMS(IP Multimedia Subsystem,IP多媒体子系统)的各种CSCF(Call Session Control Function,呼叫会话控制功能)根据SIP协议完成核心的呼叫控制功能。CSCF的种类包括P-CSCF(Proxy-CACF,代理CSCF)、I-CSCF(Interrogating CSCF,查询CSCF)和S-CSCF(Serving CSCF,服务CSCF) ,本质上它们都是SIP服务器,处理SIP信令。其业务承载由WCDMA的分组域的SGSNs( Serving GPRS Support Node,服务GPRS支持节点)、GGSN(Gateway GPRS Support Node,网关GPRS支持节点)以及无线接入网完成。
NGN、软交换与IMS的关系:
  • NGN是指基于分组技术的网络,能够提供包括电信业务在内的多种业务,能够利用多种宽带和具有Qos支持能力的传送技术,业务相关功能与底层传送相关技术之间相互独立,能够让用户自由接入不同的业务提供商,能够支持通用移动性,从而向用户提供一致的和能无处不在的网络接入业务。NGN采用分层结构,包括业务层、控制层、传输层以及用户终端,能提供多种业务类型有语音、数据、多媒体等。
  • 软交换可以理解为一种分层、开放的NGN体系结构,是NGN核心控制层技术之一。软交换实际上是“控制”,而非“交换”,因为“交换”更多体现在承载层,所以“软交换网是下一代话音网或下一代分组通信网”的说法更贴切。以控制和承载分离为基本特征的软交换技术的基本定位是在一个基于IP技术的网络上提供传统的长途等5类语音业 务, 受到终端能力、QoS、安全以及业务接口标准化等诸多方面的限制。
  • IMS以其业务、控制、承载完全分离的水平架构,集中的用户属性和接入无关等特性,一方面解决了目前软交换技术还无法解决的问题,如用户移动性支持、标准开放的业务接口、灵活的IP多媒体业务提供等;另一方面,其接入无关性,也使得IMS成为固定和移动网络融合演进的基础。在无线接入技术方面,IMS除了GSM/GPRS和WCDMA之外,WLAN通过SIPProxy也可以接入。此外,固定网络的LAN和xDSL接入技术也可以接入到IMS。
结论: 从标准化和技术成熟度来看,基于软交换构建固定的NGN更为现实,难度也较小;从技术趋势来看,开放与融合程度更高的IMS系统则代表了未来的发展方向,代表着固定与移动融合的趋势,更有前途。可以说基于软交换的网络只是NGN发展的初级阶段,而IMS是NGN发展的高级阶段。 窄带业务以软交换为主,多媒体的业务以IMS为主,两者是重叠方式,将长期共存,但从长远来看,IMS将融合软交换。

SIP summary

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

RFC3261 - SIP: Session Initiation Protocol 

  
RFC3323 - A Privacy Mechanism for the Session Initiation Protocol (SIP)

RFC3265 - Session Initiation Protocol (SIP)-Specific Event Notification

RFC3842 - A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
RFC3372 - Session Initiation Protocol for Telephones (SIP-T): Context and Architectures

RFC2976 - The SIP INFO Method

RFC3204 - MIME media types for ISUP and QSIG Objects

RFC3398 - Integrated Services Digital Network (ISDN) User Part (ISUP) to Session Initiation Protocol (SIP) Mapping

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SIP(会话启动协议 Session Initiation Protocol)是由IETF提出并主持研究的一个在IP网络上进行多媒体通信的应用层控制协议,它被用来创建、修改、和终结一个或多个参加者参加的会话进程SIP协议独立于其他会议控制协议,它在设计上独立于下面的传输层协议,因此可以灵活方便地扩展其他附加功能。SIP作为一个应用层的多媒体会话信令协议,可以被用来发起一个会话进程、在会话中邀请其他参加者加入会议,会话本身可以通过基于组播协议的会话通告协议(SAP)、电子邮件、网页通告、以及轻量级号薄访问协议(LDAP)等方式预先通告各个可能的参加者。SIP协议支持别名映射、重定向服务、ISDNIN业务。它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。SIP协议可以通过MCUMultipoint Control Unit)、单播联网方式、或组播方式创建多方会话,支持PSTN和因特网电话之间的网关功能。SIP协议可以与其他用于建立呼叫的信令系统或协议结合使用,它在设计上充分考虑了对其他协议的可扩展性。SIP协议不提供发言控制(floor control)、投票等会议控制功能,也不规定如何管理一个会议。但是SIP协议可被用来引发这些会议控制协议。SIP协议本身不具备资源预留功能,但可以向被邀请者们传达这方面的信息。

SDP(会话描述协议)描述流媒体初始化参数的格式,由IETF作为RFC 4566颁布。流媒体是指在传输过程中看到或听到的内容。

RTP是实时传输协议的缩写,用来定义在Internet上传输音频和视频的标准包格式。RTCP是实时传输控制协议的缩写,在RFC 3550中予以定义。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人,并就服务质量做出反馈。  

IP PBX是一种基于IP的公司电话系统。这个系统可以完全将话音集成到公司的数据网络中,从而建立能够连接分布在全球各地办公地点和员工的统一话音和数据网络。IP PBX最显著特征是仅需要单一设备即可为用户提供语音、传真、数据和视频等多种通信方式。

STUN (Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)) 服务器允许所有的NAT客户终端 (如防火墙后边的计算机) 与局域网以外的VOIP服务商实现电话通话。通过STUN服务器,客户终端可以了解他们的公共地址、挡在他们前面的NAT类型和通过NAT与特定局部端口相连的因特网端口。这些信息将被用于建立客户终端与VOIP服务商之间的UDP通信,以便实现通话。STUN协议在RFC3489中予以定义。虽然是在UDP端口3478连接STUN服务器,但会暗示客户终端在另外一个IP和端口号上实施测试(STUN服务器有两个IP地址)。RFC 规定这个端口和IP是随意的。

ENUM是电话号码映射(Telephone Number Mapping) 的缩写。这个缩写的后面隐藏着一个伟大的创意:即通过最好和最廉价的路由途径,可以在世界任何地点使用同一个电话号码。ENUM是将一个电话号码与一个在 DNS(域名服务器)系统中公布的因特网地址相连接。ENUM号码的拥有者可以通过DNS地址规定电话的路由地址。而且还可以为不同类型的来电规定不同的路由途径。例如,如果来电方是传真机,您可以将此规定到一个不同的路由途径上。ENUM不需要来电方必须使用电话机。 您可以象注册域名一样注册ENUM号码。目前有许多注册机构和VOIP服务商免费提供这类服务。 ENUM是一个新标准,尚未广泛推广,但它将带来电信和个人移动性行业的一场新革命。

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


SIP协议是IETF多媒体数据和控制体系结构的一部分,与其它协议相互合作,例如:RSVPResource ReServation Protocol)用于预约网络资源,RTPReal-time Transmit Protocol)用于传输实时数据并提供服务质量(QoS)反馈,RTSPReal-Time Stream Protocol)用于控制实时媒体流的传输,SAPSession Announcement Protocol)用于通过组播发布多媒体会话,SDPSession Description Protocol)用于描述多媒体会话。但是SIP协议的功能和实施并不依赖这些协议。

传输层支持:SIP协议承载在IP网,网络层协议为IP,传输层协议可用TCPUDP,推荐首选UDP


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


  • Call-ID      该字段用以唯一标识一个特定的要求或标识某一客户的所有标记。需要注意的是,一个多媒体会议可能会有多个呼叫,每个呼叫有其自己的Call-ID。例如,某用户可数次邀请某人参加同一历时很长的会议。用户也可能会收到数个参加同一会议或呼叫的邀请,其Call-ID各不相同。用户可以利用会话描述中的标识,例如SDP中的o(源)字段的会话标识和版本号判定这些邀请的重复性。Call-ID的一般格式为:Call-ID:本地标识@主机Call-ID字符需区分大小写。
  • From          所有请求和响应必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:From:显示名<SIP-URL>;tag=xxxx。其中,显示名为用户界面上显示的字符,如果系统不予显示,应置显示名为“匿名(Anonymous)”。显示名为任选字段。tag称为标记,为16进制数字串,中间可带连字符“-”。当两个共享同一SIP地址的用户实例用相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。标记值必须全局唯一。用户在整个呼叫期间应保持相同的Call-ID和标记值
  • To            该字段指明请求的接收者,其格式和From相同,仅第一个关键词代之以To。所有请求和响应消息必须包含此字段。字段中的标记参数可用于区分由同一SIP URL标识的不同的用户实例。由于代理服务器可以并行分发多个请求,同一请求可能到达用户的不同实例(如住宅电话等)。由于每个实例都可能响应,因此需用标记来区分来自不同实例的响应。需要注意的是,To字段中的标记是由每个实例置于响应消息中的。注意,SIP中,Call-IDFromTo三个字段标识一个呼叫分支。在代理服务器并行分发请求时,一个呼叫可能会有多个呼叫分支。
  • Cseq         Cseq称之为命令序号。客户在每个请求中应加入此字段,它由命令名称和一个十进制序号组成,该序号由请求客户选定,在Call-ID范围内唯一确定。序号初值可为任意值,其后具有相同Call-ID值,但不同命令名称、消息体的请求,其Cseq序号应加1。重发请求的序号保持不变。服务器将请求中的Cseq值复制到响应消息中,用于将请求和其触发的响应相关联。ACK和CANCEL请求的Cseq值(十进制序号)和对应的INVITE请求相同,BYE请求的Cseq序号应大于INVITE请求。服务器必须记忆相同Call-ID的INVITE请求的最高序号,收到序号低于此值的INVITE请求应在给出响应后予以丢弃。由代理服务器并行分发的请求,其Cseq值相同。严格来说,Cseq对于任何可由BYECANCEL请求取消的请求以及客户可连续发送多个具有相同Call-ID请求的情况都是需要的,其作用是判定响应和请求的对应关系。
  • Via            Via字段用以指示请求历经的路径。它可以防止请求消息传送产生环路,并确保响应和请求消息选择同样的路径,以保证通过防火墙或满足其它特定的选路要求。发起请求的客户必须将其自身的主机名或网络地址插入请求的Via字段,如果未采用缺省端口号,还需插入此端口号。在请求前传过程中,每个代理服务器必须将其自身地址作为一个新的Via字段加在已有的Via字段之前。如果代理服务器收到一个请求,发现其自身地址位于Via头部中,则必须回送响应“检测到环路”。当请求消息通过网络地址翻译点(如防火墙)时,请求的源地址和端口号可能被改变,此时Via字段就不能成为响应消息选路的依据。为了防止这一点,代理服务器应校验顶端Via字段,如果发现其值和代理服务器检测到的前站地址不符,则应在该Via字段中加入“receive”参数,如此修改后的字段称为“接收方标记Via头部字段”。???  若代理服务器向多播地址发送请求,则必须在其Via头部字段中加入“多播地址(maddr)”参数,此参数指明该多播地址。
        代理服务器或UAC收到Via头部字段时的处理规则是:

            规则1:第1Via头部字段应该指示本代理服务器或UAC。如果不是,丢弃该消息,否则,删除该Via字段。

            规则2:如果没有第2Via头部字段,则该响应已经到达目的地。否则,继续做如下处理。

            规则3:如果第2Via头部字段包含“maddr”参数,则按该参数指示的多播地址发送响应,端口号由“发送方”参数指明,如未指明,就使用端口号5060。响应的生存期应置为“生存期(ttl)”参数指定的值,如未指明,则置为1

            规则4:如果第2Via字段不包含“maddr”参数,但有一个接收方标记字段,则应将该响应发往“received”参数指示的地址。

            规则5:如果既无“maddr”参数又无标记,就按发送方参数指示的地址发送响应。

        Via字段的一般格式为:

            Via:发送协议 发送方;隐藏参数;生存期参数;多播地址参数;接收方标记,分支参数

            发送协议的格式为:协议名/协议版本/传送层。发送方为发送方主机和端口号。隐藏参数(hidden)表示该字段由上游代理加密以提供隐私服务。生存期参数与多播地址参数配用。分支参数用于代理服务器并行分发请求时标记各个分支,响应到达时代理可判定是哪一分支的响应。

  • Contact      该字段用于INVITE、ACK和REGISTER请求以及2xx、1xx和3xx消息,其作用是给出其后和用户直接通信的地址。INVITE和ACK请求中的Contact字段指示该请求发出的位置。它使被叫可以直接将请求(如BYE请求)发往该地址,而不必借助Via字段经由一系列代理服务器返回。对INVITE请求的成功响应消息可包含Contact字段,它使其后SIP请求(如ACK请求)可直接发往该字段给定的地址。该地址一般是被叫主机的地址,如果该主机位于防火墙之后,则为代理服务器地址。对应于INVITE请求的1xx响应消息中包含的Contact字段的含义和成功响应消息相同。但是,CANCEL请求不能直接发往该地址,必须沿原请求发送的路径前传。REGISTER请求中的Contact字段指明用户可达位置。该请求还定义了通配Contact字段“*”,它只能和值为0的“失效”字段配用,表示去除某用户的所有登记。Contact字段也可设定“失效”参数(任选),给定登记的失效时间。如果没有设定该参数,则用“失效”字段值作为其缺省值。如果两者均无,则认为SIP URI的失效时间为1小时。REGISTER请求的成功响应消息中的Contact字段返回该用户当前可达的所有位置。3xx响应消息,如用户临时迁移、永久迁移、地址模糊等消息中的Contact字段给出供重试的其它可选地址,可用于对BYE、INVITE和OPTIONS请求的响应消息。
        Contact字段的一般格式为:

            Contact:地址;q参数;动作参数;失效参数;扩展属性

        地址的表示形式和To/From字段相同。q参数取值范围为[01],指示给定位置的相对优先级,数值越大优先级越高。动作参数仅用于REGISTER请求,它表明希望服务器对其后至该客户的请求进行代理服务还是重定向服务。如果未含此参数,则执行动作取决于服务器的配置。失效参数指明URI的有效时间,可用秒表示,也可用SIP日期表示。扩展属性就是扩展名。

  • Max-Forwards    该字段用于定义一个请求到达其目的地址所允许经过的中转站的最大值。请求每经过一个中转站,该值减1。如果该值为0时该请求还没有到达其目的地址,服务器将回送“483”(Too Many Hops)响应并终止这个请求。设置该字段的目的主要是为了出现环路时不会一直消耗代理服务器的资源。该字段的初始值为70。
  • Allow           该字段给出代理服务器支持的所有请求消息类型列表。 
  • Content-Length  该字段表示消息体的大小,为十进制值。应用程序使用该字段表示要发送的消息体的大小,而不考虑实体的媒体类型。如果使用基于流的协议(如TCP协议)作为传输协议,则必须使用此消息头字段。消息体的长度不包括用于分离消息头部和消息体的空白行。 Content-Length值必须大于等于0。如果消息中没有消息体,则Content-Length头字段值必须设为0。SDP用于构成请求消息和2xx响应消息的消息体。
  • Content-Type     字段表示发送的消息体的媒体类型。如果消息体不为空,则必须存在Content-Type 头字段。如果消息体为空且Content-Type 头字段存在,则表示此类型的消息体长度为0 (如一个空的声音文件)。
  • Supported      SIP协议中定义的100类临时响应消息的传输是不可靠的,即UAS发送临时响应后并不能保证UAC端能够接受到该消息。如果需要在该响应消息中携带媒体信息,那么就必须保证该消息能够可靠的传输到对端。100rel扩展为100类响应消息的可靠传输提供了相应的机制。100rel新增加对临时响应消息的确认请求方法:PRACK。如果UAC支持该扩展,则在发送的消息中增加Supported:100rel头域和字段。如果UAS支持该扩展,则在发送100类响应时增加Require:100rel头域和字段。UAC收到该响应消息后需要向UAS发送PRACK请求通知UAS已收到该临时响应。UASUAC发送对PRACK2XX响应消息结束对该临时响应的确认过程。如果某一UA想要在发送的临时响应消息中携带SDP消息体,那么UACUAS都必须支持和使用100rel扩展以保证该消息的可靠传输。
  • User-Agent    头字段包含有发起请求的用户终端的信息。显示用户代理的软件版本信息可能会令用户在使用有安全漏洞的软件易受到外界攻击,因此,应该使User-Agent头字段成为可选配置项。
  • Expires            头字段指定了消息或消息内容)多长时间之后超时。
  • Accept-Language   该头字段用在请求消息中,表示原因短语、会话描述或应答消息中携带的状态应答内容的首选语言类型。如果消息中没有Accept-Language头字段,则服务器端认为客户端支持所有语言。
  • Authorization  字段包含某个终端的鉴权证书。
        首先介绍一下终端向服务器端请求认证的一般过程:

            终端发起请求时如果服务器端需要对用户进行认证,那么会在本地产生本次认证的NONCE,并且通过认证请求头域将所有必要的参数返回给终端从而发起对用户认证过程。

            终端收到认证请求消息后根据服务器端返回的信息和用户配置等信息采用特定的算法生成加密的RESPONSE,并且通过新的请求消息发送给服务器端。

            服务器端在收到带有认证响应的新的请求消息后首先检查NONCE的正确性。如果NONCE不是本地产生则直接返回失败。如果NONCE是本地产生,但是认证过程已经超时,则服务器端会重新产生NONCE并重新发起对用户的认证过程。老的NONCE会通过CNONCE参数返回。

            NONCE验证通过后服务器端会根据NONCE、用户名、密码(服务器端可以根据本地用户信息获取用户的密码)、URI等采用和终端相同的算法生成RESPONSE,并且对此RESPONSE和请求消息中的RESPONSE进行比较,如果二者一致则用户认证成功,否则认证失败。

        Authorization字段的一般格式为:

            Authorization:认证方式  USERNAMEREALMNONCERESPONSEURICNONCEALGORITHM

        认证方式:有DIGEST、BASIC、CHAP-PASSWORD、CARDDIGEST等认证方式。DIGEST为HTTP-DIGEST认证方式。

        USERNAME:被认证的用户的用户名。

        REALM:用于标识发起认证过程的域。

        NONCE:由发起认证过程的实体产生的加密因子。

        RESPONSE:终端在收到服务器的认证请求后根据服务器端产生的NONCE、用户名密码、URI等信息经过一定的算法生成的字符串。该字符串中包含了经过加密后的用户密码(在认证过程中处理用户密码之外其他信息都会通过SIP消息以明文的方式在终端和服务器端进行传递)。

        URI:发起的呼叫请求消息的Request-URI。由于终端在收到认证请求后需要重新向服务器端发起请求(其中带有认证响应信息)。该请求消息在经过网络服务器时某些字段包括RequestURI都有可能被修改。认证头域的URI参数用于传递终端发起请求时原始消息的Request-URI用于对认证信息进行认证,这样才能保证认证过程的正确性。

        CNONCE:如果在服务器端超时后终端才向服务器返回了带有认证响应的新的请求消息,则服务器端需要重新产生NONCE重新对用户进行认证。其中NONCE中带有新的NONCE,老的NONCE会通过CNONCE参数返回给终端。  

        ALGORITHM:用于传递生成RESPONSE的算法。  


 

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

SIP 请求消息:

用于客户端为了激活按特定操作而发给服务器的SIP消息。

INVITE      = 发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。
ACK          = 
证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配套使用。
BYE          = 
结束会话
CANCEL     = 
取消尚未完成的请求,对于已完成的请求(即已收到最终响应的请求)则没有影响
REGISTER  = 
注册
OPTION     = 
查询服务器的能力

SIP响应消息:

用于对请求消息进行响应,指示呼叫的成功或失败状态。

1xx = 通知性应答,如表示正在拨打的180
2xx = 成功应答
3xx = 转接应答
4xx = 呼叫失败
5xx = 服务器失败
6xx = 全局失败

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

(转载自 - 中国IT认证实验室)

    SIP-T和BICC的比较
     BICC是直接面向电话业务的应用提出的,来自传统的电信阵营,具有更加严谨的体系架构,因此它能为在软交换中实施现有电路交换电话网络中的业务提供很好的透明性。相比之下,SIP的体系架构则不像BICC定义的那样完善,SIP主要用于支持多媒体和其他新型业务,在基于IP网络的多业务应用方面具有更加灵活方便的特性。
     BICC是在ISUP基础上发展起来的,在语音业务支持方面比较成熟,能够支持以前窄带所有的语音业务、补充业务和数据业务等,但BICC协议复杂,可扩展性差。在无线3G应用中,BICC协议处于3GPPR4电路域核心网的Nc接口,提供了对(G)MSCServer之间呼叫接续的支持。
     在固定网软交换应用中,BICC协议处于分层体系结构中的呼叫控制层,提供了不同软交换之间呼叫接续的支持。采用BICC体系架构时,可以使所有现在的功能保持不变,如号码和路由分析等,仍然使用路由概念。这就意味着网络的管理方式和现有的电路交换网极为相似。
     SIP相对而言,在语音业务方面没有BICC成熟,但它能支持较强的多媒体业务,扩展性好,根据不同的应用,可对其进行相应的扩展。在固定网软交换应用中,SIP协议处于扁平体系结构中的呼叫控制层,提供了不同软交换之间呼叫接续的支持。采用SIP体系架构时,从路由角度看,存在两种情况:
    第一种情况,正常的ISUP消息添加一些信息后封装在SIP消息中传送,呼叫服务器、号码、路由分析和信令以及业务的互通等功能保持不变,路由分析指引到目标IP地址的寻址。
    第二种情况是基于ENUM(IETF的电话号码映射工作组)数据库的。在这种方式下,呼叫服务器的呼叫控制与现有电路交换网中的呼叫控制完全不同,呼叫控制中将没有号码和路由分析,但是仍需业务映射和互通。由于不使用电路识别码CIC、ISUP管理进程、消息传送协议MTP,标准的ISUP协议要相应修改。网络的管理在某种程度上得到了简化(如无须构建信令网,没有路由定义)。另外,和现有网络相比,运营商对网络的控制减少,控制方式发生了巨大的变化。
    通过以上分析,采用SIP协议在某种程度上会丢失一些现有电话网络中的功能。要引入这些功能,则需要对SIP协议进行扩展。相比较而言,BICC基本能提供所有现有电话网络的功能。相信,经过修改并标准化的SIP可以达到BICC对传统业务的支撑能力。

    SIP-T和SIP-I的比较
   关于软交换SIP域和传统PSTN的互通问题目前有两个标准体系,即IETF的SIP-T协议族和ITU-T的SIP-I协议族。
    
1.IETF的SIP-T协议
    SIP-T(SIP for Telephones)由IETFMMUSIC工作组的RFC3372所定义,整个协议族包括RFC3372、RFC2976、RFC3204、RFC3398等。它采用端到端的研究方法建立了SIP与ISUP互通时的三种互通模型,即:呼叫由PSTN用户发起经SIP网络由PSTN用户终结;呼叫由SIP用户发起由PSTN用户终结;呼叫由PSTN用户发起由SIP用户终结。
    SIP-T为SIP与ISUP的互通提出了两种方法,即封装和映射,分别由RFC3204和RFC3398所定义。但SIP-T只关注于基本呼叫的互通,对补充业务则基本上没有涉及。
    
2.ITU-T的SIP-I协议
    SIP-I(SIP with Encapsulated ISUP)协议族包括ITU-TSG11工作组的TRQ.2815和Q.1912.5。前者定义了SIP与BICC/ISUP互通时的技术需求,包括互通接口模型、互通单元IWU所应支持的协议能力集、互通接口的安全模型等。后者根据IWU在SIP侧的NNI上所需支持的不同协议能力配置集,详细定义了3GPP SIP与BICC/ISUP的互通、一般情况下SIP与BICC/ISUP的互通、SIP带有ISUP消息封装时(SIP-I)与BICC/ISUP的互通等。
    SIP-I协议族重用了许多IETF的标准和草案,内容不仅涵盖了基本呼叫的互通,还包括了BICC/ISUP补充业务的互通。
    
3.SIP-T与SIP-I的比较
    显然,SIP-I协议族的内容远远比SIP-T的内容要丰富。SIP-I协议族不仅包括了基本呼叫的互通,还包括了CLIP、CLIR等补充业务的互通;除了呼叫信令的互通外,还考虑到了资源预留、媒体信息的转换等;既有固网软交换环境下SIP与BICC/ISUP的互通,也有移动3GPPSIP与BICC/ISUP的互通,等等。
    尤为重要的是,SIP-I协议族具有ITU-T标准固有的清晰准确和详细具体,可操作性非常强。并且3GPP已经采用Q.1912.5作为IMS与PSTN/PLMN互通的最终标准。所以,软交换SIP域与PSTN的互通应该遵循ITU-T的SIP-I协议族。实际上已经有许多电信运营商最终选择了SIP-I而放弃了SIP-T。基于以上比较和分析,我们可以得出以下结论:
    
在软交换之间互通协议方面,目前固网中应用较多的是SIP-T,移动应用的是BICC,未来的发展方向是SIP-I;在软交换与媒体网关之间的控制协议方面以及软交换和IAD之间的控制协议方面,MGCP较成熟,但H.248继承了MGCP的所有的优点,有取代MGCP的趋势;软交换与终端之间的控制协议方面,SIP是趋势;软交换与应用服务器之间,SIP是主流,目前此业务接口基本成熟;应用服务器与第三方业务,Parlay是方向,但目前商用不成熟。

(转载)

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

网络电话系统/ IP PBX系统由一个或多个SIP电话以及一个IP PBX服务器组成,还可以选用一个网络电话网关。IP PBX服务器与代理服务器类似:SIP客户端可以是软件电话或者基于硬件的电话,它向IP PBX服务器登记,当其希望进行呼叫时,便向IP PBX请求建立连接。IP PBX具有所有电话/用户的姓名地址录及其相应的SIP地址,因而能够通过网络电话网关或网络电话服务业者提供的VOIP服务来连接内部呼叫或发送外部呼叫。



IP PBX如何在网络上集成并使用PSTN或网际网络来连接呼叫。

VOIP网关是将电话流量转化为数据网络上IP传输的装置。通常用于以下2种方式:
1. 将呼入的PSTN/电话线转化为VOIP/SIP: 通过这种方式,VOIP网关允许常规电话网络接受和发送呼叫。在很多商业案例中倾向于继续使用传统电话线,因为它能保证较高的呼叫音质和可用性。
2. 将传统企业通信交换机/电话系统连接到IP网络:通过这种方式,VOIP网关允许通过VOIP进行呼叫。可以通过VOIP供应商进行呼叫,或者在公司设有多个办事处的情况下,可以通过网际网络发送呼叫来降低内部事务通讯的呼叫费用。VOIP网关也可以作为外部单元或PCI卡使用,在这些装置中大部分都是作为外部单元使用的。VOIP网关将电话线连接到IP网络连接器的一个或多个端口上。
VOIP网关的类型 :
1. 模拟单元:模拟单元用于将常规模拟电话线连接到网关上。模拟单元能够连接2到24根电话线。
2. 数字单元:数字单元使你能够连接数字线路包括一条或多条BRI ISDN线(欧洲),一条或多条PRI/E1线(欧洲),和一条或多条T1线(美国)。

 Codec(编/解码器)的作用是将模拟信号转换成数字信号,以便在数据网络上传输。以下是目前正在使用的Codec。

GSM - 13 Kbps (全速), 20毫秒帧尺寸
iLBC - 15Kbps,20毫秒帧尺寸: 13.3 Kbps, 30毫秒帧尺寸
ITU G.711 - 64 Kbps, 基于样本的,也叫alaw/ulaw
ITU G.722 - 48/56/64 Kbps
ITU G.723.1 - 5.3/6.3 Kbps, 30毫秒帧尺寸
ITU G.726 - 16/24/32/40 Kbps
ITU G.728 - 16 Kbps
ITU G.729 - 8 Kbps, 10毫秒帧尺寸
Speex - 2.15 to 44.2 Kbps
LPC10 - 2.5 Kbps
DoD CELP - 4.8 Kbps

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

World Clocks

Endless Space Headline Animator

Mobile Ads