开源sip客户端 linux,开源SIP服务器 Kamailio
Kamailio是一個(gè)開(kāi)源的SIP服務(wù)器,原名OpenSER。
Kamailio項(xiàng)目誕生于2005年7月,它是從德國(guó)FhG FOKUS研究所主導(dǎo)的SIP Express Router(SER)項(xiàng)目組分裂出來(lái)的。新項(xiàng)目建立的目標(biāo)是創(chuàng)建一個(gè)開(kāi)放的開(kāi)發(fā)環(huán)境,以建立一個(gè)強(qiáng)大的可擴(kuò)展的開(kāi)源SIP服務(wù)器。最初,新項(xiàng)目命名為OpenSer,后來(lái)因?yàn)樯虡?biāo)侵權(quán)問(wèn)題,在2008年7月28號(hào),重命名為Kamailio(另外一個(gè)分枝是OpenSips)。
Kamailio的官方主頁(yè)是http://www.kamailio.org 。1.5.x前的版本,其源碼托管在sourceforge.net的SVN庫(kù)上。從3.0.0版開(kāi)始,源碼托管在sip-router.org的GIT庫(kù)上。
2008年11月,Kamailio和SER的開(kāi)發(fā)團(tuán)隊(duì)再度攜手合作,整合兩個(gè)SIP服務(wù)應(yīng)用項(xiàng)目。整合結(jié)束后發(fā)布的V3.0.0版,在同一源碼樹(shù)包含了這兩個(gè)應(yīng)用。換句話說(shuō),從源碼角度,Kamailio和SER已經(jīng)合并為一個(gè)應(yīng)用。不同的地方僅是編譯時(shí)選擇的名字和缺省配置的加載模塊而已。
不同于PBX,KAMAILIO是個(gè)純粹的SIP服務(wù)器,它可以作為PROXY、注冊(cè)服務(wù)器、重定向服務(wù)器,也可作為簡(jiǎn)單的PRESENCE服務(wù)器,其本身并不處理RTP,可能通過(guò)RTPPROXY來(lái)處理RTP的NAT問(wèn)題。
Kamailio is an Open Source, GPL2, SIP Server Routing Platform. It is written in C for Linux/Unix plaforms and focuses on performance, flexibility and security.
On Nov 04, 2008, Kamailio and SIP Express Router have started the SIP Router Project.
Web links
?Home page with new project name: http://www.kamailio.org
?Home page with old project name: http://www.openser-project.org
?SourceForge.net Project page: http://sourceforge.net/projects/openser/
Features
?SIP proxy/registrar/redirect server (RFC3261, RFC3263)
?UDP/TCP/TLS/SCTP support
?Transactional stateful proxy
?Modular architecture
?Programmable configuration file
?ENUM support
?Call Processing Language (CPL)
?Gateway to sms or xmpp
?Authentication, authorization and accounting via Radius or database
?NAT traversal system
?Least cost routing
?Load balancing
?Carrier routing
?Multiple database backends: MySQL, Postgres, Oracle, BDB or flat files
?SIMPLE Presence Server (IETF SIMPLE extensions - rich presence)
?Dialog Info Presence - SLA/BLA
?XCAP and RLS
?Presence User Agent
?Dialog Stateful Proxy
?Instant Messaging ?Offline message storage
?Instant messaging conferencing
?SNMP support
?Perl Programming Interface
?Java SIP Servlet Application server
?Over 80 modules (extensions)
Documentation
?Main Documentation Page - http://www.kamailio.org/docs/
?Dokuwiki Page - http://www.kamailio.org/dokuwiki/
我們使用Kamailio主要用在SIP dispatcher server,即SIP redirect server
安裝及配置手冊(cè)如下
一.安裝
1.依賴包:
libmysqlclient & libz (zlib) :mysql DB support (the db_mysql module) Shared libraries
MySQL-shared-5.1.32-0.glibc23.i386.rpm
MySQL-devel-community-5.1.32-0.rhel5.i386.rpm
libxml2:cpl-c (Call Processing Language) or the presence modules (presence and pua*)
libperl:perl scripting from you config file (perl module)
2.源代碼安裝
make,make modules,make install
或者make all,make install
參考:
3.啟動(dòng):kamctl start
4.重啟:kamctl restart
5.監(jiān)控服務(wù)狀態(tài):kamctl moni
6.MySQL配置:
1)安裝:
edit Makefile.var files to include the MySQL module
vim Makefile.vars
Uncomment the next line in the file:
MODS_MYSQL=on
cp /usr/local/lib/mysql/libmysqlclient.so.16 /usr/lib
Edit now /usr/local/etc/kamailio/kamctlrc and add:
DBENGINE=MYSQL
SIP_DOMAIN=pryko.com
6.1 創(chuàng)建數(shù)據(jù)庫(kù):kamdbctl create
6.2管理員登錄:user 'admin' with password ' openserrw '
6.3 添加用戶:kamctl add
6.4 默認(rèn)值:database url, users and passwords
- DEFAULT_DB_URL="mysql://opensips:opensipsrw@localhost/opensips"
- r/w user: openser; passwd: openserrw
- r/o user: openserro; passwd: openserro
二.配置
1.配置文件 kamailio.cfg
/usr/local/etc/kamailio/kamailio.cfg
2.配置文件 kamctlrc
/usr/local/etc/kamailio/kamctlrc
三.腳本
參考文檔:
Kamailio Wiki
http://www.kamailio.com/dokuwiki
Cookbooks and Reference
http://www.kamailio.com/dokuwiki/doku.php/core-cookbook:1.5.x
Kamalio 1.5.x Module Functions Index
http://www.kamailio.com/dokuwiki/doku.php/modules:1.5.x:index-functions
四.負(fù)載均衡Load Balancing
參考:http://www.kamailio.org/dokuwiki/doku.php/asterisk:load-balancing-and-ha
4.1配置文件 kamailio.cfg
loadmodule("dispatcher.so")
modparam("dispatcher", "list_file", "/usr/local/etc/kamailio/dispatcher.list")
modparam("dispatcher", "force_dst", 1)
4.2 ---dispatcher.list----文件
# group sip addresses of your * units
1 sip:221.5.152.171:5060
1 sip:221.5.152.170:5060
4.3 kamctl命令:kamctl dispatcher show
-- command 'dispatcher' - manage dispatcher
* Examples:? dispatcher addgw 1 sip:1.2.3.1:5050 1 'outbound gateway'
*? ? ? ? ? ? dispatcher addgw 2 sip:1.2.3.4:5050 3 ''
*? ? ? ? ? ? dispatcher rmgw 4
dispatcher show ..................... show dispatcher gateways
dispatcher reload ................... reload dispatcher gateways
dispatcher dump ..................... show in memory dispatcher gateways
dispatcher addgw
.......................... add gateway
dispatcher rmgw ................ delete gateway
查看載入的配置:kamctl dispatcher dump
修改后重新載入配置:kamctl dispatcher reload
如需使用,需安裝MySQL-client-community-5.1.32-0.rhel5.i386.rpm
否則報(bào)錯(cuò):ERROR: This command requires a database engine - none was loaded
五.與Asterisk對(duì)接負(fù)載均衡
注意事項(xiàng):sip.conf
注釋如下行
;canreinvite=no ; Asterisk by default tries to redirect
Asterisk#1? 10.10.10.56
配置sip.conf
[5000]
type=friend
;username=5000
secret=5000_phone2
callerid=5000
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=no ; This phone is natted
host=dynamic ; This device registers with us
;canreinvite=no ; Asterisk by default tries to redirect
配置extension.conf
[default]
exten => 6000,1,Dial(SIP/6000@10.10.10.57,60)
exten => 5000,1,Dial(SIP/5000,60)
Asterisk#2? 10.10.10.57
配置sip.conf
[6000]
type=friend
;username=6000
secret=6000_phone2
callerid=6000
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=no ; This phone is natted
host=dynamic ; This device registers with us
;canreinvite=no ; Asterisk by default tries to redirect
配置extension.conf
[default]
exten => 6000,1,Dial(SIP/6000,60)
exten => 5000,1,Dial(SIP/5000@10.10.10.136,60)
Kamailio 10.10.10.136
配置kamailio.cfg
…
loadmodule "dispatcher.so"
modparam("dispatcher", "list_file", "/usr/local/etc/kamailio/dispatcher.list")
…
route{
if ( !mf_process_maxfwd_header("10") )
{
sl_send_reply("483","To Many Hops");
drop();
};
ds_select_dst("1", "0");
forward();
}
配置dispatcher.list
# line format
# setit(integer) destination(sip uri) flags (integer, optional)
1 sip:10.10.10.56:5060
測(cè)試:
登錄10.10.10.57上的6000,登錄10.10.10.56上的5000
從6000呼叫5000,會(huì)呼叫10.10.10.136上的5000,10.136重定向到10.56
六.按號(hào)碼段重定向網(wǎng)關(guān)
配置kamailio.cfg
使用正則表達(dá)式
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (uri=~"^sip:5[0-9]+@10.10.10.136$") {
if (is_method("INVITE")) {
ds_select_dst("1", "0");
forward();
exit;
}
}
if (uri=~"^sip:8[0-9]+@10.10.10.136$") {
if (is_method("INVITE")) {
ds_select_dst("2", "0");
forward();
exit;
}
}
sl_send_reply("404","Not here");
exit;
}
配置dispatcher.list
# line format
# setit(integer) destination(sip uri) flags (integer, optional)
1 sip:10.10.10.56:5060 #1
2 sip:10.10.10.54:5060
測(cè)試:
登錄10.10.10.57上的6000,登錄10.10.10.56上的5000
從6000呼叫5000,會(huì)呼叫10.10.10.136上的5000,10.136重定向到10.56
從6000呼叫8002,會(huì)呼叫10.10.10.136上的8002,10.136重定向到10.54
總結(jié)
以上是生活随笔為你收集整理的开源sip客户端 linux,开源SIP服务器 Kamailio的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 各种硬件接口_sdio接口速率
- 下一篇: linux zk集群,linux Zoo