当前位置: 首页 > 软件库 > 企业应用 > 开源SIP项目 >

Kamailio

开源 SIP 服务器
授权协议 GPLv2
开发语言 C/C++
所属分类 企业应用、 开源SIP项目
软件类型 开源软件
地区 不详
投 递 者 微生昌勋
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Kamailio是一个开源的SIP服务器,原名OpenSER 

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.

Kamailio 诞生于 2005 年 7 月,它是从德国 FhG FOKUS 研究所主导的 SIP Express Router(SER) 项目组分裂出来的。新项目建立的目标是创建一个开放的开发环境,以建立一个强大的可扩展的开源 SIP 服务器。Kamailio 是个纯粹的 SIP 服务器,它可以作为 PROXY、注册服务器、重定向服务器,也可作为简单的 PRESENCE 服务器。

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
安装及配置手册如下

一.安装
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.启动:kamctl start
4.重启:kamctl restart
5.监控服务状态: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 创建数据库:kamdbctl create
6.2管理员登录:user 'admin' with password ' openserrw '
6.3 添加用户:kamctl add
6.4 默认值: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


四.负载均衡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
否则报错:ERROR: This command requires a database engine - none was loaded



五.与Asterisk对接负载均衡
注意事项: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

测试
登录10.10.10.57上的6000,登录10.10.10.56上的5000
从6000呼叫5000,会呼叫10.10.10.136上的5000,10.136重定向到10.56

六.按号码段重定向网关
配置kamailio.cfg
使用正则表达式
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

测试
登录10.10.10.57上的6000,登录10.10.10.56上的5000
从6000呼叫5000,会呼叫10.10.10.136上的5000,10.136重定向到10.56
从6000呼叫8002,会呼叫10.10.10.136上的8002,10.136重定向到10.54

  • 以这个路由文件为蓝本: https://github.com/kamailio/kamailio/blob/master/etc/kamailio.cfg 新建一个/etc/kamailio-local.cfg,内容是: #!define WITH_MYSQL #!define WITH_NAT #!define WITH_USRLOCDB listen=udp:192.168.100.131:

  •           Kamailio(前身为OpenSER)是一个开源的SIP服务器项目,基于GPL授权。它以处理性能见长,每秒钟能处理上千个并发呼叫。其官方主页为http://www.kamailio.org。本文描述Kamailio的安装配置过程。安装环境为CentOS7,kamailio版本V5.2.2。   安装MariaDB服务器 Kamailio服务器安装前,必须先确保系统上已经安装M

  • 安装 kamailio 首先在本地局域网做实验: wget -O- https://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add - sudo vi /etc/apt/sources.list # deb http://deb.kamailio.org/kamailio53 jessie main # deb htt

  • 本文来自 csdn  http://blog.csdn.net/voipmaker  转载注明出处。 我创建了一个 kamailio学习交流群,368685590,欢迎加入。 1.修改域名: 修改配置文件: /usr/local/etc/kamailio/kamctlrc  SIP_DOMAIN=x.x.x.x 修改domain后,注册导致回复 403 not relay, 需要同步修改 主配置文

  • Kamailio是一个开源的SIP服务器,原名OpenSER. 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.  kamaili

  •     查看网上资料,主要的即时通信框架有支持XMPP的OpenFire和支持SIP的kamailio,根据同事的了解: “XMPP协议和 OpenFire搭配,缺陷为:连接次数太多无法简化进行快速注册,并且用户在3000左右内存就大幅波动。 SIP协议和开源的 Kamailio搭配,可简化注册流程,服务器只做消息的数据库插入操作,其它业务逻辑 由其它服务器处理.但是语音通话那块要研究ORTP”。

  • 有个业界牛人搞过一个演讲,题目就是Why I Love Kamailio 我来个东施效颦 运行稳定 升级平滑,Kamailio不轻易抛弃旧版本的特性 文档齐全 对比FreeSWITCH,Kamailio体系要小得多,虽然入门较难,但胜在文档齐全。 支持KEMI 我主要用lua,OpenSIPS据说支持lua,但是不太容易调试(或许我是太笨),而且支持的方式很不一样

  • Kamailio Users Mailing List发生了变化 我一直通过主页/"Contact Us"/"users (at) lists . kamailio . org",这条路进去 但是现在此路不通 现在这个链接可以访问: https://lists.kamailio.org/mailman3/hyperkitty/list/sr-users@lists.kamailio.org/ 学习

  • 通过uac模块发送sip message native路由 loadmodule "htable.so" loadmodule "uac.so" event_route[htable:mod-init] { route(SEND_MESSAGE); } route[SEND_MESSAGE] {        //hardcode,写死就行     $var(from) = "1001"

  • Kamailio相关资源是不少的,这里仅列举下本人喜欢的资源: https://github.com/fredposner/scripts/tree/master/kamailio fred是个大牛人,https://www.kamailio.org/w/business-directory/有他的介绍 https://awesomeopensource.com/project/havfo/WEB

  • 1、先决条件 l  读者熟悉Ubuntu/Centos、Linux各种基本操作。 l  读者熟悉apt-get软件包管理工具。 l  读者熟悉编译安装Linux程序的一般过程。 l  操作用户具有sudo权限。 2、安装第三方依赖库 由于不同的Linux系统,同一个依赖库的名称也会不一样,在线安装方法也不一样,所以在此以Ubuntu和centos两种Linux系统为例进行讲解。 Ubuntu系统下

  • 1.yum安装依赖 sudo yum install gcc gcc-c++ flex bison make openssl openssl-devel libxml2 libxml2-devel zlib-devel ncurses* e2fsprogs-devel uuid-devel libuuid-devel readline6 readline-devel

  • 安装freeswitch和unimrcp 1.准备 freeswitch-1.8.7.tar.gz 下载 https://files.freeswitch.org/releases/freeswitch/freeswitch-1.8.7.tar.gz unimrcp-deps-1.3.0 下载:https://www.unimrcp.org/project/component-view/depen

  • 系统版本:CentOS Linux release 7.3.1611 (Core) 一.安装kamailio Git clone --depth 1 --no-single-branch https://github.com/kamailio/kamailio kamailio cd kamailio git checkout -b 5.1 origin/5.1 make cfg vim src/

  • 开启日志,并将日志输出到/var/log/kamailio.log文件 修改配置文件vi /usr/local/etc/kamailio/kamailio.cfg,添加 log_facility=LOG_LOCAL0 log_prefix="{$mt $hdr(CSeq) $ci} " 这样它会把日志交给“LOG_LOCAL0”  ,接下来编辑CentOS的rsyslog配置 vi /etc/rs

  • how  can kamailio do for asterisk  Using Asterisk as a Conference Bridge http://www.kamailio.org/dokuwiki/doku.php/asterisk:conference-bridge Asterisk Load balancing and High Availability with Kamaili

  • http://www.asipto.com/pub/kamailio-devel-guide/ http://www.kamailio.org/docs/ Abstract This book documents the internal architecture of KAMAILIO (OPENSER) SIP Server, providing the details useful to d

  • ## 1 下载 [kamailio 源码tar包](外链网址已屏蔽) 依赖: git client: apt-get install git - it is recommended to have a recent version, if your Linux distro has an old version, you can download newer one from: 外链网址已屏蔽 g

  • #!KAMAILIO # ####### Include Local Config If Exists ######### import_file "kamailio-local.cfg" ##!define WITH_MULTIDOMAIN #!define WITH_NAT 1 #!define WITH_NATSIPPING 1 #!define WITH_BLOCK3XX 1 ####

 相关资料
  • 我们很高兴的宣布由淘宝网核心系统部开发的Tengine服务器终于正式开源了。 淘宝网是亚洲最大的电子商务网站,Alexa全球排名第12位。每天访问淘宝网的PV超过了几十亿。大压力的访问,对淘宝网的Web服务器提出了严苛的要求。经过一系列的对比,我们最终选择了Nginx作为我们的Web服务器,因为它性能高,又非常节省资源(CPU和内存),并且有足够的灵活性。 一开始我们使用Nginx还仅仅用它来处理

  • 我们团队决定尝试使用OpenShift Origin server部署服务。我们有一个单独的虚拟机,安装了OpenShift原始服务器,运行良好。我能够部署我们的本地docker映像,这些服务也运行良好——pod已启动并运行,获得了自己的IP,我可以从虚拟机访问服务endpoint。 问题是我无法让它工作,所以服务暴露在机器之外。我读到了路由器,它被认为是公开服务的正确方式,但它只是不起作用,现在

  • SIP

    SIP 是 Scilab(一种免费的类Matlab编程环境)的图像处理和计算机视觉库。SIP 可以读写 JPEG/PNG/BMP 格式的图片。具备图像滤波、分割、边缘检测、形态学处理和形状分析等功能。

  • Sofia-SIP 是一个开源 SIP 协议栈实现,参照 IETF RFC3261 规范进行编码实现。 它可以作为 SIP 客户端软件的构建模块,用于诸如 VoIP,IM 和许多其他实时、端对端的个人通信服务。其主要目标平台是 GNU / Linux。 Sofia-SIP 最初出自 诺基亚研究中心 关于 SIP 协议栈的研究工作。 Sofia-SIP 以 LGPL 许可协议进行发布。     另外

  • sip-redirect 是一个微型的 SIP 重定向服务器,支持 IPv4 和 IPv6(可选), 使用和配置都非常简单,不提供 TCP 和多播的支持。

  • SIP Communicator是一个Java VoIP和即时消息客户端。支持大部分流行的即时消息协议和电话协议比如SIP、Jabber、AIM/ICQ、MSN、Yahoo! Messenger、Bonjour、IRC等。