首页   新闻  文摘   行业   产品  技术  厂商  标准  BBS  导航  搜索
呼叫中心 | CRM | 统一通信 | 企业通信 | VoIP | 视像通讯 | 语音应用 | 热点专题
首页>>CT技术培训>> SS7在IP网上的发展趋势   问题解答 Q&A

 

第五课 一个基于IP插口的ISUP服务器例子

上一页

3. 实现细节 

  • ISUP服务器软件结构

  • 多线程ISUP服务器

 

  • 客户端处理框图

 

  • 总体图

  • 数据结构

所有通信的数据包都有一个固定的格式,其中包括数据包的固定头部和信息载荷。包大小固定为MAX_PSIZE+96。

数据包结构定义如下:

typedef struct ISrvPkt_s {

ISrvPktHdr hdr;

U8 payload[MAX_PSIZE];

} ISrvPkt;

数据包的头部结构定义如下:

typedef struct ISrvPktHdr_s {

U16 size;

U16 type;

U32 ctahd;

U32 subtype;

} ISrvPktHdr;

其中:size 为16位的数据包有效包大小(包括头部)。

Type 为16位的包类型,有2个值:

SC_DATA ISUP服务器发给客户端的数据。

CS_DATA ISUP客户端发给服务器的数据。

Ctahd 为32位的CT access句柄。

Subtype 为32位的子类型,目前有2个值:

ST_INCOMING_CALL 呼入;

ST_OUTGOING_CALL 呼出;

信息载荷有两类,一为隶属载荷,它指明信息隶属的目标信令点(DPC)和电路号(CIC)。定义如下:

typedef struct ISrvAttachPayload_s {

U32 CIC;

U32 DPC;

} ISrvAttachPayload;

第二类为号码载荷,包含呼叫的主被叫号码,定义如下:

typedef struct ISrvNumbersPayload_s {

char calling_number[MAX_SIZE+1];

char called_number[MAX_SIZE+1];

} ISrvNumbersPayload;

 

  • 映射表

Circuit

Sockfd

Ctahd

CIC

DPC

1

5

0x80000001

1

1.1.1

2

6

0x80000002

2

1.1.1

3

7

0x80000003

3

1.1.1

4

8

0x80000001

1

1.1.2

5

9

0x80000002

2

1.1.2

 

4. 如何和ISUP服务器配合完成呼叫 

  • 提供的客户端接口函数

DWORD NMSAPI ISUPServerConnect(char *ip_addr,char *logfilename);

DWORD NMSAPI ISUPServerAttach(CTAHD ctahd, unsigned long CIC, unsigned long DPC);

DWORD NMSAPI ISUPServerPlaceCall( CTAHD ctahd, char *calling_num, char *called_num);

DWORD NMSAPI ISUPServerAcceptCall(CTAHD ctahd);

DWORD NMSAPI ISUPServerAnswerCall(CTAHD ctahd);

DWORD NMSAPI ISUPServerReleaseCall(CTAHD ctahd);

DWORD NMSAPI ISUPServerRejectCall(CTAHD ctahd);

DWORD NMSAPI ISUPServerReset(CTAHD ctahd);

DWORD NMSAPI ISUPServerBlockCalls(CTAHD ctahd);

DWORD NMSAPI ISUPServerUnblockCalls(CTAHD ctahd);

 

  • 呼入流程(确认并应答)



  • 呼出流程(远端应答)

  • 呼叫释放流程(由客户端程序释放)

  • 呼叫释放流程(由远端SS7交换机释放)

 

 

  • 阻塞呼叫流程(由客户端程序发出阻塞)

  • 阻塞呼叫流程(由远端SS7交换机发出阻塞)

 

 

5. 技术提示

  • 高低字节顺序说明:

通过插口发送数据之前和接收数据之后,要调用ntohs( ), ntohl( ), htons( ), htonl( )函数来转换高低字节顺序。

  • 采用BSD插口API以便于移植。

  • 采用POSIX多线程机制以便于移植。

  • 用户自定义的CTA_EVENT接收触发事件,在客户端中被集成到CTA事件处理循环之中,以便于集中处理。

  • 客户端使用nocc协议。

  • 如果不采用单独创建异步线程来处理ISUP消息,也可以采用另一个方法:调用ctaRegisterWaitObject.来把当前线程挂起,等待ISUP消息的到来,直到ISUP消息到来后激活线程。

6. 结论

   现在让我们总结一下上面实现的ISUP服务器:

   首先,它是一个建立在NMS SS7支持的ISUP协议层基础上的多线程服务器。它提供了基于TCP协议插口的API函数。它是跨平台的,同时支持Solaris和NT。

   但是,这个服务器只支持ISUP协议,不支持SS7中其它协议层。它只是一个演示程序,没有经过完整的测试,不够强壮。程序中用到的API函数(ISUPxxxx)也不是NMS SS7提供的标准API函数。

   另外,是使用TCP还是使用UDP的问题,也没有经过论证,有待实践中作进一步确定。


相关资源

  1. IETF(因特网工程任务组)网站:www.ietf.org

  2. IETF是开发SS7/IP标准的主要组织,Sigtran组是专门从事SS7/IP开发的。

    Rfc2960:这是SCTP协议的详细说明书。

    draft-ietf-sigtran-m3ua-10:这是MTP3用户适应层协议。

  3. 介绍SS7/IP有关知识及产品:www.ss7oip.com

  4. SS7/IP有关新闻:www.intellinet-tech.com/news

  5. 附相关书籍:

<<rfc2960>>;

<<draft-ietf-sigtran-m3ua-10>>;

<<tutorial_ss7_ip_interworking>>;

 

首页>>CT技术培训>> SS7在IP网上的发展趋势   问题解答 Q&A

NMS公司CTI产品应用介绍


 


推荐培训栏目: 融合通讯   CT技术培训

CT技术培训
专 栏

 

|业界新闻|论坛文摘|行业应用|产品展示|技术天地|厂商汇总|免责声明|咨询服务|公司简介|联系方法|广告服务|企业会员|

编辑投稿信箱      如何查找厂商联系方法

电话:010-82012787,82079677   传真:010-62041062
呼叫中心建设及运营管理咨询服务:优胜资讯(010)87768798 87768726