关于 Kamailio|OpenSIPS 双中心之简介
双中心意味着:
- 都是独立的一套系统,IP 地址,数据库等都各是各
- 二个中心之间还有联系,SIP UA 向任意一个注册,效果都一样,系统都能找到 UA
双中心方案的好处是实施起来比较简单,路由脚本也很简单,关键是效果还好
下面给出 Kamailio 路由:
#!define MATE_IP "192.168.1.100"
#!define MATE_URI "sip:192.168.1.100:5060"# REGISTER 的处理跟之前一样
route[registrar] {if (is_method("REGISTER")) {save("location");exit;}
}# INVITE 的处理要先检查是不是 MATE 发过来的
route[invite] {if (is_method("INVITE")) {if ($si == "MATE_IP") {if (!lookup("location")) {send_reply("404", "Not Found");} else {route(relay);}} else {if (!lookup("location")) {$du = MATE_URI;} else {append_branch(MATE_URI);}route(relay);}exit;}
}
OpenSIPS 不支持预处理,但逻辑是一样的
此外,要有分支的概念
$du = xxx;
t_relay();
exit;
这只有一个分支
$du = xxx;
append_branch(yyy);
t_relay();
exit;
这样有两个分支,其中第一个叫主分支