当前位置: 首页 > news >正文

Kamailio 网络拓扑案例分享

网络拓扑比较特别

Kamailio 单网卡

IMS --------------   Kamailio ------------    Fs

10.2.3.4        listen 192.168.1.100    172.16.1.99

                    外网地址 10.2.3.5

                    外网地址 172.16.1.100

对于 IMS 来说,只能用 10.2.3.5 访问 Kamailio

对于 Fs 来说, 只能用 172.16.1.100 访问 Kamailio

Kamailio 配置如下:

listen=udp:192.168.1.100:5060

alias=10.2.3.5:5060  # myself 逻辑

alias=172.16.1.100:5060 # myself 逻辑

路由脚本需要特别处理:

如果 INVITE 来自 IMS , 设置分支标志 FLB_SRC_IMS_DST_FS,不能调用 record_route(Kamailio 理解不了这种网络拓扑),而是 route(RR)

如果 INVITE 来自 Fs, 设置分支标志 FLB_SRC_FS_DST_IMS,同理,需要 route(RR)

下面是 route[RR] 的具体实现:

route[RR] {
    if (isbflagset(FLT_SRC_FS_DST_IMS)) {
        record_route_preset("10.2.3.5:5060", "172.16.1.100:5060");
        add_rr_param(";r2=on");    
    else if (isbflagset(FLT_SRC_IMS_DST_FS)){        
        record_route_preset("172.16.1.100:5060", "10.2.3.5:5060");
        add_rr_param(";r2=on");    
    } else {
        record_route();
    }
    return;
}


rtpengine.conf 这样配置:

interface=ims/192.168.1.100!10.2.3.5;fs/192.168.1.100!172.16.1.100

...

NATMANAGE 的路由代码为:

route[NATMANAGE] {

...

    if (is_request() && !has_totag()) {
        if (isbflagset(FLT_SRC_FS_DST_IMS)) {
            $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " direction=ims direction=fs";    
        } else if (isbflagset(FLT_SRC_IMS_DST_FS)) {
            $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " direction=fs direction=ims";    
        }
    }
...

}

if (is_request() && !has_totag()) 的意思是,direction 调用一次就行,rtpengine 非常聪明


Kamailio 的中文好文章在哪里?^_^


http://www.mrgr.cn/news/57151.html

相关文章:

  • Vue组件开发详解
  • Golang使用viper读取配置到结构体,但是获取的数据为空
  • 图像梯度-Sobel算子、scharrx算子和lapkacian算子
  • Linux:在xshell中演示在没有图形化界面的情况下如何使用gdb工具对代码进行调试
  • RISC-V笔记——Pipeline依赖
  • 建库建表练习
  • C++ set和map的模拟实现
  • Llama Tutor:开源 AI 个性化学习平台,根据主题自动制定学习计划
  • RTDETR 引入 MogaBlock | 多阶门控聚合网络 | ICLR 2024
  • ThinkPad中键打开网页关闭网页失灵
  • 【Linux】线程互斥与同步,生产消费模型(超详解)
  • Redis-05 Redis发布订阅
  • 得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级
  • 10.23Python_matplotlib_乱码问题
  • 三菱FX5U PLC程序容量设置
  • vue3-06-html2canvas使用 + zoom、transform: scale图片缩放适配方案 + 动态引入静态资源(打包上线后也能使用)
  • Java面试题九
  • C语言_动态内存管理
  • 2024年软件设计师中级(软考中级)详细笔记【10】网络与信息安全基础知识(分值5分)
  • 解决RabbitMQ脑裂问题
  • ARM/Linux嵌入式面经(四九):诺瓦星云
  • 特种设备作业G1工业锅炉司炉题库
  • 前端算法:树(力扣144、94、145、100、104题)
  • MYSQL-SQL-01-DDL(Data Definition Language,数据定义语言)
  • AIMO 2025 竞赛启动 | IMO 系列
  • GitHub 介绍及使用