Erlang SIP業(yè)務(wù)介紹
一提起SIP協(xié)議,很多人首先想到的業(yè)務(wù)就是VoIP業(yè)務(wù)了。那么除此之外還有什么呢?今天我們就來介紹一下SIP業(yè)務(wù)的另一個(gè)體現(xiàn)——Erlang項(xiàng)目叫yxa(官網(wǎng)http://www.stacken.kth.se/project/yxa/),可以說是Erlang上的SIP協(xié)議棧和服務(wù)器實(shí)現(xiàn)。yxa除了實(shí)現(xiàn)了基本的SIP業(yè)務(wù)的發(fā)包解包、傳輸層和事務(wù)層,還實(shí)現(xiàn)了一組服務(wù)器功能,以獨(dú)立的應(yīng)用程序形式提供,包括下面幾個(gè)。
1、incomingproxy
實(shí)現(xiàn)了注冊員registrar的功能,可以處理REGISTER請求。
實(shí)現(xiàn)了有事務(wù)狀態(tài)的代理服務(wù)器的功能,即transaction stateful proxy。
這也是最核心的功能,基本實(shí)現(xiàn)了RFC3261,提供了一般的SIP業(yè)務(wù)的大部分功能。
2、outgoingproxy
主要是幫助SIP業(yè)務(wù)的客戶端穿越NAT用的。
3、pstnproxy
讓VoIP用戶和普通電話互通。
4、appserver
處理分支(forking)請求和CPL(Call Processing Language)。CPL讓管理員可以定義復(fù)雜的呼叫處理和路由規(guī)則,從而實(shí)現(xiàn)高級(jí)的業(yè)務(wù)。
5、數(shù)據(jù)庫支持
Mnesia、Mysql、LDAP、純文本文件。Mnesia是Erlang自帶的分布式數(shù)據(jù)庫。
6、基于Web的管理界面
Web服務(wù)器也使用基于Erlang的yaws??梢怨芾砦恢梅?wù)、用戶數(shù)據(jù)庫,查看運(yùn)行情況等等。下面是管理界面一瞥:
7、RFC兼容性
RFC3261 SIP: Session Initiation Protocol
RFC3263 Locating SIP Servers
RFC3265 SIP-Specific Event Notification
RFC2916 E.164 number and DNS
RFC3581 Symmetric Response Routing
RFC3326 The Reason Header Field
RFC4320 SIP Non-INVITE Actions (updates RFC3261)
RFC3327 Registering Non-Adjacent Contacts (Path: header)
RFC3856 A Presence Event Package for SIP
RFC3903 SIP Extension for Event State Publication
RFC3863 Presence Information Data Format (PIDF)
RFC4235 An INVITE-Initiated Dialog Event Package for SIP
以及其他幾個(gè)必要的RFC如DNS、MD5等。
從以上SIP業(yè)務(wù)中,可以看到,yxa支持Presence,也就是說它支持呈現(xiàn)業(yè)務(wù)。