双中心意味着:
- 都是独立的系统,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;
这样有两个分支,其中第一个叫主分支
这里有二个链接可以参考: