第五課 一個(gè)基于IP插口的ISUP服務(wù)器例子
3. 實(shí)現細節
ISUP服務(wù)器軟件結構
多線(xiàn)程ISUP服務(wù)器
客戶(hù)端處理框圖
總體圖
數據結構
所有通信的數據包都有一個(gè)固定的格式,其中包括數據包的固定頭部和信息載荷。包大小固定為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位的包類(lèi)型,有2個(gè)值:
SC_DATA ISUP服務(wù)器發(fā)給客戶(hù)端的數據。
CS_DATA ISUP客戶(hù)端發(fā)給服務(wù)器的數據。
Ctahd 為32位的CT access句柄。
Subtype 為32位的子類(lèi)型,目前有2個(gè)值:
ST_INCOMING_CALL 呼入;
ST_OUTGOING_CALL 呼出;
信息載荷有兩類(lèi),一為隸屬載荷,它指明信息隸屬的目標信令點(diǎn)(DPC)和電路號(CIC)。定義如下:
typedef struct ISrvAttachPayload_s {
U32 CIC;
U32 DPC;
} ISrvAttachPayload;
第二類(lèi)為號碼載荷,包含呼叫的主被叫號碼,定義如下:
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服務(wù)器配合完成呼叫
提供的客戶(hù)端接口函數
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);
呼入流程(確認并應答)
呼出流程(遠端應答)
呼叫釋放流程(由客戶(hù)端程序釋放)
呼叫釋放流程(由遠端SS7交換機釋放)
阻塞呼叫流程(由客戶(hù)端程序發(fā)出阻塞)
阻塞呼叫流程(由遠端SS7交換機發(fā)出阻塞)
5. 技術(shù)提示
高低字節順序說(shuō)明:
通過(guò)插口發(fā)送數據之前和接收數據之后,要調用ntohs( ), ntohl( ), htons( ), htonl( )函數來(lái)轉換高低字節順序。
采用BSD插口A(yíng)PI以便于移植。
采用POSIX多線(xiàn)程機制以便于移植。
用戶(hù)自定義的CTA_EVENT接收觸發(fā)事件,在客戶(hù)端中被集成到CTA事件處理循環(huán)之中,以便于集中處理。
客戶(hù)端使用nocc協(xié)議。
如果不采用單獨創(chuàng )建異步線(xiàn)程來(lái)處理ISUP消息,也可以采用另一個(gè)方法:調用ctaRegisterWaitObject.來(lái)把當前線(xiàn)程掛起,等待ISUP消息的到來(lái),直到ISUP消息到來(lái)后激活線(xiàn)程。
6. 結論
現在讓我們總結一下上面實(shí)現的ISUP服務(wù)器:
首先,它是一個(gè)建立在NMS SS7支持的ISUP協(xié)議層基礎上的多線(xiàn)程服務(wù)器。它提供了基于TCP協(xié)議插口的API函數。它是跨平臺的,同時(shí)支持Solaris和NT。
但是,這個(gè)服務(wù)器只支持ISUP協(xié)議,不支持SS7中其它協(xié)議層。它只是一個(gè)演示程序,沒(méi)有經(jīng)過(guò)完整的測試,不夠強壯。程序中用到的API函數(ISUPxxxx)也不是NMS SS7提供的標準API函數。
另外,是使用TCP還是使用UDP的問(wèn)題,也沒(méi)有經(jīng)過(guò)論證,有待實(shí)踐中作進(jìn)一步確定。
相關(guān)資源
IETF(因特網(wǎng)工程任務(wù)組)網(wǎng)站:www.ietf.org
IETF是開(kāi)發(fā)SS7/IP標準的主要組織,Sigtran組是專(zhuān)門(mén)從事SS7/IP開(kāi)發(fā)的。
Rfc2960:這是SCTP協(xié)議的詳細說(shuō)明書(shū)。
draft-ietf-sigtran-m3ua-10:這是MTP3用戶(hù)適應層協(xié)議。
介紹SS7/IP有關(guān)知識及產(chǎn)品:www.ss7oip.com
SS7/IP有關(guān)新聞:www.intellinet-tech.com/news
附相關(guān)書(shū)籍:
<<rfc2960>>;
<<draft-ietf-sigtran-m3ua-10>>;
<<tutorial_ss7_ip_interworking>>;
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 赤壁市| 昌邑市| 柳河县| 万全县| 亳州市| 汤阴县| 四川省| 上高县| 大关县| 平和县| 东港市| 林芝县| 灵川县| 遂昌县| 广南县| 大冶市| 班玛县| 呼伦贝尔市| 启东市| 资溪县| 柘荣县| 南溪县| 定日县| 遵化市| 深州市| 北辰区| 许昌市| 廉江市| 永定县| 堆龙德庆县| 饶平县| 长葛市| 大城县| 商城县| 屏南县| 芦山县| 故城县| 泗水县| 舒兰市| 涪陵区| 陇川县| http://444 http://444 http://444 http://444 http://444 http://444