严格路由 vs 松散路由
Kamailio 里的“严格路由”和“松散路由”本质上是 SIP Route/Record-Route 机制的两种模式分别来自较老的 RFC 2543 和较新的 RFC 3261。现在实际生产中几乎都使用松散路由。1. 核心区别对比项严格路由 Strict Routing松散路由 Loose Routing标准来源旧 RFC 2543RFC 3261Route URI 标识没有;lr参数有;lr参数Request-URI会被改成下一个代理的 URI保持为最终目标 URIRoute 头作用通过不断改写 R-URI 实现路由Route 头明确表示下一跳是否推荐不推荐主要为了兼容老设备推荐现代 SIP 标准方式Kamailio 常用处理函数一般不主动使用loose_route()复杂度高容易和 NAT、转发逻辑冲突简单清晰2. 松散路由 Loose Routing松散路由是现代 SIP 的标准做法。典型 Record-Route 头类似Record-Route: sip:proxy.example.com;lr关键点是 URI 里有;lrlr代表 loose routing。松散路由下的请求示例假设 Kamailio 在初始 INVITE 中插入了Record-Route: sip:kamailio.example.com;lr后续 BYE、ACK、re-INVITE 等 in-dialog 请求会带上Route: sip:kamailio.example.com;lr但 Request-URI 仍然是最终目标例如BYE sip:alice192.168.1.100 SIP/2.0 Route: sip:kamailio.example.com;lr也就是说Request-URI 最终目标 Route 经过哪些代理Kamailio 收到后通常这样处理if (has_totag()) { if (loose_route()) { route(RELAY); exit; } }loose_route()会检查 Route 头如果发现自己在 Route 头里就消费掉对应 Route然后继续转发。3. 严格路由 Strict Routing严格路由是旧 SIP 规范里的方式。Record-Route 头里没有;lrRecord-Route: sip:proxy.example.com这种情况下后续请求的 Request-URI 会被改成下一个代理地址而真正的目标 URI 会被放到 Route 头的末尾。严格路由下的请求示例可能变成BYE sip:kamailio.example.com SIP/2.0 Route: sip:alice192.168.1.100也就是说Request-URI 下一个代理 Route 最终目标或后续路由集合这种方式的问题是Request-URI 不再表示最终目标代理需要反复改写 Request-URI和 NAT、注册 Contact、负载均衡逻辑更容易冲突配置和排错更复杂现代 SIP 设备基本不推荐这样用。4. Kamailio 中怎么体现Kamailio 里通常通过rr模块处理 Record-Route 和 Route。常见配置loadmodule rr.so modparam(rr, enable_full_lr, 0) modparam(rr, append_fromtag, 1)初始 INVITE 时让 Kamailio 留在信令路径中if (is_method(INVITE|SUBSCRIBE)) { record_route(); }后续 in-dialog 请求if (has_totag()) { if (loose_route()) { route(RELAY); exit; } if (is_method(ACK)) { exit; } sl_send_reply(404, Not here); exit; }这里的重点是loose_route()虽然名字叫loose_route()但 Kamailio 的rr模块在一定程度上也能兼容一些严格路由场景。不过在现代配置中一般只需要按松散路由设计。5. Record-Route 里的;lr这是判断松散路由的核心。松散路由Record-Route: sip:1.2.3.4;lr或者Record-Route: sip:proxy.example.com;transportudp;lr严格路由Record-Route: sip:1.2.3.4没有;lr就可能被对端当成严格路由。6. Kamailio 的enable_full_lrKamailio 的rr模块有一个参数modparam(rr, enable_full_lr, 0)默认情况下Record-Route 可能类似Record-Route: sip:proxy.example.com;lr如果设置为modparam(rr, enable_full_lr, 1)可能生成Record-Route: sip:proxy.example.com;lron这是为了兼容某些有问题的 SIP 设备它们可能不正确识别没有值的;lr参数。一般情况下保持默认即可除非遇到特定终端或运营商兼容性问题。7. 实际使用建议在 Kamailio 生产环境中建议使用松散路由使用record_route()插入带;lr的 Record-Route使用loose_route()处理后续 in-dialog 请求不要主动生成没有;lr的 Record-Route严格路由只作为兼容旧设备考虑。典型配置结构request_route { if (is_method(INVITE|SUBSCRIBE)) { record_route(); } if (has_totag()) { if (loose_route()) { route(RELAY); exit; } if (is_method(ACK)) { exit; } sl_send_reply(404, Not here); exit; } route(RELAY); } route[RELAY] { if (!t_relay()) { sl_reply_error(); } exit; }8. 一句话总结严格路由是旧式 SIP 路由方式会通过改写 Request-URI 控制下一跳松散路由是现代标准方式通过Route头和;lr参数控制路由Request-URI 保持最终目标。Kamailio 生产环境中基本都应该使用record_route()loose_route()的松散路由模式。

相关新闻

Vibe Coding到Agentic Engineering:AI编程范式演进与实战指南

Vibe Coding到Agentic Engineering:AI编程范式演进与实战指南

Vibe Coding到Agentic Engineering:AI编程范式演进与实战指南 2025年2月,OpenAI联合创始人Andrej Karpathy首次提出"Vibe Coding"(氛围编程)概念,同年入选柯林斯词典年度热词。然而仅仅一年后,20…

2026/10/18 8:38:36 阅读更多 →
财务场景 RPA 替代技术:发票审核与对账自动化 Agent 实现方案深度解析与主流厂商测评

财务场景 RPA 替代技术:发票审核与对账自动化 Agent 实现方案深度解析与主流厂商测评

在企业数字化转型的深水区,财务部门正经历从“规则驱动”向“智能驱动”的技术范式重构。传统的RPA(机器人流程自动化)虽然解决了跨系统搬运数据的重复性工作,但在面对非结构化发票识别、动态对账逻辑判断以及长链路业务闭环时&am…

2026/10/15 9:28:10 阅读更多 →
别再手动调广告了!AI自动化投放系统上线72小时后,CTR提升41%的底层逻辑大揭秘

别再手动调广告了!AI自动化投放系统上线72小时后,CTR提升41%的底层逻辑大揭秘

更多请点击: https://codechina.net 第一章:别再手动调广告了!AI自动化投放系统上线72小时后,CTR提升41%的底层逻辑大揭秘 传统广告优化依赖运营人员“看数据—猜归因—调出价—等反馈”的线性循环,平均响应延迟超18小…

2026/10/16 13:44:54 阅读更多 →

最新新闻

Linux stress工具深度实践:从安装避坑到压测验证

Linux stress工具深度实践:从安装避坑到压测验证

简介:本资源为Linux系统管理员与运维开发人员必备的 stress 压力测试工具源码包,专用于CPU与内存极限负载场景下的稳定性验证与性能调优。资源完整包含1.0.1版本源码构建体系,共32个文件,涵盖configure配置脚本、Makefile系列构…

2026/10/18 8:39:19 阅读更多 →
中国AI公司出海新样本:天生全球化的路径与实践

中国AI公司出海新样本:天生全球化的路径与实践

这几年我一直关注中国科技公司出海这件事。早期大家出海靠的是工具类产品,开发成本低、试错快,做一波换一波;但到了AI时代,出海的性质完全变了——不再是“把国内做的东西翻译一下放出去”,而是一上来就要面对全球用户…

2026/10/18 8:39:19 阅读更多 →
外聘教师管理系统:C#与SQL Server教务核算闭环实战

外聘教师管理系统:C#与SQL Server教务核算闭环实战

简介:外聘教师管理系统是一套面向C#课程设计或毕业设计的WinForm源码项目,系统覆盖外聘教师信息维护、按院系/课程/姓名多维查询、代课工资自动计算、学校基础信息维护,以及登录与权限分级管理。压缩包共97个文件,以26个.cs窗体逻…

2026/10/18 8:39:19 阅读更多 →
Windows消息机制精讲:从消息队列到窗口过程,轻松解决界面卡死

Windows消息机制精讲:从消息队列到窗口过程,轻松解决界面卡死

这一节是Windows运行机理里消息机制的第3小节。标题写得克制,但内容恰恰是整个GUI程序最容易被低估的部分:消息是怎么在系统队列、线程队列、窗口过程之间流动的。很多程序在功能上没问题,并发逻辑也没问题,但界面就是容易卡、容易…

2026/10/18 8:39:19 阅读更多 →
AI对话产品出海实战:从多语言到本地化的关键策略

AI对话产品出海实战:从多语言到本地化的关键策略

1. 出海这件事,是怎么被逼出来的先说个背景。国内做对话式AI的团队,这两年普遍遇到一个共同的困境:技术跑得比市场快,但商业化路径却迟迟没有跑通。某创业团队就是典型——模型能力在内部评测和用户反馈里都排得上号,但…

2026/10/18 8:39:19 阅读更多 →
C# WebSocket实战:从握手到心跳重连的完整Demo解析

C# WebSocket实战:从握手到心跳重连的完整Demo解析

简介:这是一套面向C#开发者的WebSocket通信完整示例,适合需要实现实时双向通信、研究服务端与客户端交互逻辑的中高级程序员,也可作为ASP.NET项目集成WebSocket功能的参考。资源包内含客户端与服务端两个完整工程,共76个文件&…

2026/10/18 8:38:19 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →