- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有三个运行 Ubuntu 14.04 的虚拟服务器。我在一台服务器上安装了 Kamailio,在其他服务器上安装了 Asterisk。我希望 Kamailio 服务器充当负载平衡器并将传入调用转发到 asterisk 服务器(循环法)。
我想先用一个 Asterisk 服务器测试它,如果可行,我可以添加更多以提高性能。
我像这样添加了我的 SIP 提供商凭据:
kamctl add test testpasswd
然后我将 Asterisk 服务器添加到调度程序表中,如下所示:
INSERT INTO dispatcher (setid,destination,flags,priority,attrs,description) VALUES (1,"sip:10.1.1.3:5060",0,0,"","Asteriskl-I");
我更改了我的 asterisk 服务器上的 sip.conf 文件,它连接到我的 kamailio 服务器并且似乎可以工作。
我的 kamailio.cfg 文件如下所示:
#!KAMAILIO
#
# sample config file for dispatcher module
# - load balancing of VoIP calls with round robin
# - no TPC listening
# - don't dispatch REGISTER and presence requests
#
# Kamailio (OpenSER) SIP Server v3.2
# - web: http://www.kamailio.org
# - git: http://sip-router.org
#
# Direct your questions about this file to: sr-users@lists.sip-router.org
#
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php
# for an explanation of possible statements, functions and parameters.
#
# Several features can be enabled using '#!define WITH_FEATURE' directives:
#
# *** To run in debug mode:
# - define WITH_DEBUG
#
####### Global Parameters #########
#!define WITH_DEBUG
#!ifdef WITH_DEBUG
debug=4
log_stderror=yes
#!else
debug=2
log_stderror=no
#!endif
memdbg=5
memlog=5
log_facility=LOG_LOCAL0
fork=yes
children=4
/* comment the next line to enable TCP */
disable_tcp=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
auto_aliases=no
/* add local domain aliases */
# alias="mysipserver.com"
port=5060
/* uncomment and configure the following line if you want Kamailio to
bind on a specific interface/port/proto (default bind on all available) */
# listen=udp:127.0.0.1:5060
sip_warning=no
####### Modules Section ########
#set module path
mpath="/usr/local/lib64/kamailio/modules/"
# loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "kex.so"
loadmodule "tm.so"
loadmodule "tmx.so"
loadmodule "sl.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "sanity.so"
# loadmodule "ctl.so"
loadmodule "mi_rpc.so"
loadmodule "acc.so"
loadmodule "dispatcher.so"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- acc params -----
modparam("acc", "log_flag", 1)
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")
# ----- tm params -----
modparam("tm", "fr_timer", 2000)
modparam("tm", "fr_inv_timer", 40000)
# ----- dispatcher params -----
# modparam("dispatcher", "db_url",
# "mysql://kamailio:123456@localhost/kamailio")
modparam("dispatcher", "table_name", "dispatcher")
modparam("dispatcher", "flags", 2)
modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")
####### Routing Logic ########
# main request routing logic
route {
# per request initial checks
route(REQINIT);
# handle requests within SIP dialogs
route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# record routing for dialog forming requests (in case they are routed)
# - remove preloaded route headers
remove_hf("Route");
if (is_method("INVITE|SUBSCRIBE"))
record_route();
#if (is_method("INVITE"))
#{
# ds_select_domain("1","4");
# #sl_send_reply("300","Redirect");
# #t_relay();
# exit;
#}
# account only INVITEs
if (is_method("INVITE"))
{
setflag(1); # do accounting
}
# handle presence related requests
route(PRESENCE);
# handle registrations
route(REGISTRAR);
if ($rU==$null)
{
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
# dispatch destinations
route(DISPATCH);
route(RELAY);
}
route[RELAY] {
if (!t_relay()) {
sl_reply_error();
}
exit;
}
# Per SIP request initial checks
route[REQINIT] {
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if(!sanity_check("1511", "7"))
{
xlog("Malformed SIP message from $si:$sp\n");
exit;
}
}
# Handle requests within SIP dialogs
route[WITHINDLG] {
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(1); # do accounting ...
setflag(3); # ... even if the transaction fails
}
route(RELAY);
} else {
if (is_method("SUBSCRIBE") && uri == myself) {
# in-dialog subscribe requests
route(PRESENCE);
exit;
}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# non loose-route, but stateful ACK;
# must be ACK after a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and discard.
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
}
# Handle SIP registrations
route[REGISTRAR] {
if(!is_method("REGISTER"))
return;
#sl_send_reply("404", "No registrar");
#t_relay();
if(!ds_select_dst("1", "4"))
{
sl_send_reply("404", "No registrar");
exit;
}
forward();
exit;
}
# Presence server route
route[PRESENCE] {
if(!is_method("PUBLISH|SUBSCRIBE"))
return;
sl_send_reply("404", "Not here");
exit;
}
# Dispatch requests
route[DISPATCH] {
# round robin dispatching on gateways group '1'
if(!ds_select_dst("1", "4"))
{
send_reply("404", "No destination");
exit;
}
xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
t_on_failure("RTF_DISPATCH");
return;
}
# Sample failure route
failure_route[RTF_DISPATCH] {
if (t_is_canceled()) {
exit;
}
# next DST - only for 500 or local timeout
if (t_check_status("500")
or (t_branch_timeout() and !t_branch_replied()))
{
if(ds_next_dst())
{
t_on_failure("RTF_DISPATCH");
route(RELAY);
exit;
}
}
}
如果我将我的 Asterisk 盒直接连接到我的 SIP 提供商,它会完美地工作。但是,如果我将它连接到 kamailio 服务器并将 kamailio 服务器连接到 SIP 提供商,它就不会。
我在谷歌上搜索了几个小时,尝试了很多东西,但我真的不知道下一步该尝试什么......如果有人能帮助我,我会很高兴!
非常感谢,并致以最诚挚的问候
最佳答案
我像这样添加了我的 SIP 提供商凭据:
kamctl add test testpasswd
- 这是错误的。
查看以下链接以获取有关如何在使用用户名/密码身份验证的 Kamailio 上设置 SIP 中继的详细信息:
http://lists.sip-router.org/pipermail/sr-users/2015-September/090001.html
关于linux - Kamailio 作为多个 Asterisk 服务器的负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39330529/
关于我我对 Kamailio 解决方案的使用非常陌生,有 SIP 实际应用的基本背景 概述 我的任务是作为主动/主动注册商构建 Kamailio 解决方案 Kamailio Design 问题 您会使
我在服务器上使用 Kamailio 和 OpnVPN,在安卓设备上使用 CSipSimple。, 问题在于,对于某些设备,这可以工作,而对于其他设备,则不能。 当其中一个设备是鲜为人知的设备(阿尔卡特
尝试运行在 kamailio 中创建 mysql 数据库的脚本时出现错误(/usr/local/sbin/kamdbctl create)。错误: 第 1 行出现错误 1682 (HY000): na
出于某种我不知道的原因,我有一些带有 utf32_general_ci 排序规则的 Kamailio 表(示例中的位置),还有一些带有 latin1_swedish_ci 的表。 我尝试在 githu
我正在尝试使用 Kamailio 和 Freeswitch。我正在关注此处列出的文章: http://nil.uniza.sk/sip/kamailio-33-and-freeswitch-122-i
在安装 Kamailio SIP 服务器的过程中,我遇到了问题。在我写完 /usr/local/sbin/kamdbctl create 后,只出现了 ERROR: database engine n
各位开发人员大家好... 我们已经测试 Kamailio 一周了,它运行良好......但是我们的一些 friend 报告说他们无法使用移动互联网连接到我们的服务器...并且默认的 SIP 端口似乎被
我需要通过 Lua 脚本在 Kamailio 3.3.1 中设置自定义 header 。理论上我可以像这样在配置脚本中设置一个 - append_hf("X-MyHeader: myvalue\r\n
各位开发人员大家好... 我们已经测试 Kamailio 一周了,它运行良好......但是我们的一些 friend 报告说他们无法使用移动互联网连接到我们的服务器...并且默认的 SIP 端口似乎被
我需要通过 Lua 脚本在 Kamailio 3.3.1 中设置自定义 header 。理论上我可以像这样在配置脚本中设置一个 - append_hf("X-MyHeader: myvalue\r\n
我有三个运行 Ubuntu 14.04 的虚拟服务器。我在一台服务器上安装了 Kamailio,在其他服务器上安装了 Asterisk。我希望 Kamailio 服务器充当负载平衡器并将传入调用转发到
我想在 kamalio 中用 redis 数据库替换 MySQL。然而,kamalio 支持与 MySQL 的事务,即在 MySql 数据库中保存数据。在尝试使用 redis 运行 kamailio
嗨,我正在一个项目中,我们需要连接我们的 kamailio SIP 服务器 4.1(安装在 ubuntu 上,我可以从中提供 SIP 服务我尝试使用 jitsi 还为 Kamailio 安装 radi
我是第一次使用 Kamailio,我已经成功地启动并运行了它,从而可以在客户端之间进行调用。 是否可以同时调用多个客户,并且第一个接听电话的客户可以接听电话? 最佳答案 您似乎在这里寻找的是多重分支。
在特定情况下,我需要将 Kamailio 连接到 PostgreSQL 数据库而不是 MySQL。有人可以为此提供步骤吗?尝试了论坛中的多个步骤,但都失败了。 面临的问题:每当 kamailio 在
需要使用 PHP 以编程方式向 Kamailio 添加新用户。我尝试使用 SQL 查询手动将用户名和密码添加到 订阅者 表,但它不起作用,因为 ha1> 和 ha1b 应添加到表中。我不知道Kamai
我已经安装了带有 mysql、presence、nat、auth 模块的 kamailio。它们都在另一台服务器(Amazon Ec2)上工作。现在我在笔记本电脑上尝试,遇到了一些问题。 当我尝试使用
我正在使用 Kamailio 作为 SIP 服务器,我想将 SIP 消息转发到 C++ 应用程序。我一直在寻找 SIP 模块来执行此操作,但文档并不完全清楚,并且在线示例也不多。 如果有人能在要使用的
我正在使用 SIP 协议(protocol)栈开发 IOS VoIP 应用程序。我将使用 Kamailio 作为 sip 服务器。 但是每个VoIP客户端调用VoIP电话都需要一个sip地址(sip账
我的场景是:SIP 中继连接到 Kamailio 服务器,该服务器在本地连接到多个 Asterisk 服务器,并且应该在这些 Asterisk 服务器之间负载平衡调用。如何? Kamailio 服务器
我是一名优秀的程序员,十分优秀!