ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IMS网络路由组织方案:从SIP信令到号码分析的排障实战

IMS网络路由组织方案:从SIP信令到号码分析的排障实战 简介一份介绍IMS网络路由组织方案的PPT演示文稿面向通信工程师、IMS运维及网络规划人员系统讲解基于IP多媒体子系统的路由组织核心知识。内容从IMS网络分省部署、单级扁平化组网切入说明两级ENUM/DNS号码解析机制并详细对比IMS与固网、电信C网及其他运营商之间的信令与媒体互通点梳理省内、本地、省际/国际话路组织原则及紧急呼叫处理流程。同时配有本域呼叫、跨域呼叫和域互通去话路由示例覆盖主被叫P-CSCF、S-CSCF、I-CSCF、SLF/HSS、MGCF等关键网元的信令与媒体选路帮助理解E.164号码到SIP URI的转换及互通节点选择。全文按IMS路由组织原则、号码规整与传送、话路路由示例等板块展开结构清晰适合学习或培训宣贯。资源为单个PPT文件约560KB已有128人学习可用于快速建立IMS路由组织整体框架并支撑实际组网与运维分析。1. IMS网络路由组织方案在解决什么一次普通呼损背后的三个路由层IMS网络路由组织方案讲的是IMS网络里SIP信令和媒体面怎么从用户侧一路走到对端并在节点失效时自动换路。很多人接手VoLTE、VoNR或者企业SIP语音中继接入后第一轮排障全花在注册和呼损上用户能注册电话却打不通本地号码能叫跨域号码总是超时主备切换后全部呼叫失败。这些现象背后往往是同一个根因网络里的每个节点没有一张一致的转发表或者表里有规则但没有按正确顺序生效。把IMS网络路由组织讲清楚核心就是三件事每个节点怎么选择下一跳、每个号码怎么映射成可路由的URI、节点出问题时哪些参数决定切换快慢。这个方向适合负责IMS核心网运维、SBC对接、企业网关SIP trunk接入的从业者来读按本文给的表格和命令可以把自己手头的路由组织逐层排查一遍。2. 先认清IMS网络地图网元分工、接口职责与开局前要定的路由策略2.1 一次呼叫要穿过哪些网元四个角色先记住IMS网络路由的第一步不是查配置而是认清信令路径上每一类网元到底管什么。一个典型组网里用户侧先接触P-CSCF它通常和SBC部署在同一位置负责把用户接入IMS网络承担注册请求的第一跳转发和媒体控制在漫游场景下P-CSCF位于拜访网络而归属的S-CSCF仍然负责保存用户状态。I-CSCF是网络入口路由节点不保存用户长期状态它向HSS查询用户归属再从能力集里挑选一个S-CSCF。S-CSCF是会话控制的核心保存注册状态按初始过滤规则触发业务并负责把呼叫路由到被叫所在的域。一次基本呼叫的信令路径可以这样记主叫终端到主叫侧SBC/P-CSCF再到主叫侧I-CSCF再到主叫侧S-CSCFS-CSCF处理业务后把请求转到被叫侧S-CSCF被叫侧再经P-CSCF/SBC到达被叫终端。跨网呼叫时还会经过域间入口但逻辑上仍然以CSCF为边界。网元是否保存用户状态在路由里的职责一句话判断方法P-CSCF/SBC保存注册会话绑定接入、维护Path、锚定信令和可选媒体看用户从哪个地址接入I-CSCF不保存长期状态入口查询、S-CSCF选择看谁在请求时问HSSS-CSCF保存注册状态与业务iFC会话控制、触发AS、域间路由看谁在执行业务逻辑HSS保存用户签约数据提供归属信息与S-CSCF能力集看查询后谁返回归属数据AS保存业务数据按iFC触发增值业务看呼叫里多出的服务节点这张表就是路由组织的坐标所有配置最终都在往表里填地址、填优先级、填超时。排障时也先问自己当前这条请求卡在哪个角色上是找不到下一跳还是下一跳根本没状态。2.2 路由依赖的接口与协议一张表分清往哪转和找谁问IMS路由组织不像传统PSTN只有一套局向表它由两类查询组成。一类是SIP接口上的转发决定每个请求的下一跳去哪另一类是Diameter接口上的查询决定用户归属和S-CSCF能力。两个体系要同时工作只看SIP层永远定位不全。接口两端作用与路由的关系GmUE到P-CSCF注册与基本会话接入路由的第一跳建立PathMw各CSCF之间转发SIP请求核心网内部逐跳转发依赖DNSCxI/S-CSCF到HSS鉴权、位置、S-CSCF分配决定归属找哪个S-CSCFDxI/S-CSCF到SLF多HSS组网定位决定去查哪台HSSISCS-CSCF到AS业务触发按iFC决定请求是否绕到ASMxSBC到CSCF边界转发信任域边界上的路由出口设计路由组织方案时最常见的错误是把所有问题都扔给SIP转发忽略Cx/Dx查询结果。比如注册总失败抓包看到SIP层一直在401和200之间循环实际原因是I-CSCF从HSS拿不到S-CSCF能力集或者SLF指向了错误的HSS。这时候在SIP层调再久都没用应该去看Diameter日志。另一个开局就要做的决策是核心网内部下一跳用IP直连还是用DNS。常见做法是核心网内部用静态IP或短TTL域名边界对接用对端提供的域名再靠NAPTR/SRV选路。这样容灾切换时不需要改对端配置只需要改本域DNS。小规模开局为了快直接写IP也能跑但方案里一定要预留域名和TTL的升级路径。2.3 开局前先定三个路由策略少走一半弯路做路由组织方案别急着写号码分析表先把三件事定下来。第一归属域名统一。所有用户归属统一到一个内部IMS域名例如ims.example.com各网元用子域名区分。同一个域名在DNS里对应多个节点才谈得上负载均衡和容灾。各厂家设备默认配置往往不一致开局时要把域名写成方案统一值而不是各用各的默认域名。第二号码与URI的映射方式。号码量小可以用显式SIP URI号码量大则建议用ENUM动态映射。显式方案简单直观但新增号段要改表动态映射灵活但ENUM系统本身的可用性必须纳入方案否则号码分析会引入新的单点。第三下一跳解析优先级。我常用的顺序是先查本节点路由表做精确号码前缀匹配再通过ENUM把号码转成SIP URI再用DNS域名解析下一跳最后用静态IP兜底。这个顺序同时决定了排障路径出问题时从前往后逐层验证不必同时翻遍所有配置。3. 把地址、号码和DNS管好路由组织的三张地基表3.1 用户标识与网络标识先分清tel URI、SIP URI、IMPUIMS里的地址有两层一层是给人看、给计费用、给运营商做互联的号码E.164格式另一层是给SIP路由用的URI。用户签约时既分配IMPI也分配一个或多个IMPU。IMPU可以是sip:userims.example.com也可以是tel:8613800000000。路由组织方案里tel URI进入核心网后通常要转成SIP URI否则很多节点无法对号码做域名解析也没法组装Route头。排障时需要分清四个字段才不会看乱抓包。Request-URI是当前请求的目标由主叫侧或路由节点改写Path是注册阶段P-CSCF写入的接入路径Route控制本次呼叫逐跳转发顺序Contact是终端的直接联系方式。字段谁生成路由作用常见错误Request-URI主叫侧或路由节点表示被叫当前目标地址直接填tel URI而不转SIP URIPathP-CSCF在注册请求中写入记录用户接入侧路径刷新注册时被意外改掉Route主叫侧或网络侧生成控制逐跳转发的顺序顺序倒置导致S-CSCF被跳过Contact注册终端后续呼叫的直达地址NAT场景填了内网地址3.2 NAPTR/SRV下一跳解析的配置样例与参数说明IMS核心网里SIP节点互相转发时地址解析通常按RFC 3263来做先查NAPTR决定传输协议再查SRV选择节点和端口最后查A/AAAA记录落到IP。UDP、TCP、SCTP可以同时在NAPTR里出现。下面是一个最小可用的DNS区域片段$ORIGIN ims.example.com. ; NAPTR先决定走哪个传输协议 ; order1 优先处理preference 10/20 表示同序下的先后 1 10 IN NAPTR 50 10 s SIPD2U _sip._udp.pcscf01.ims.example.com. 1 20 IN NAPTR 60 10 s SIPD2T _sip._tcp.pcscf01.ims.example.com. ; SRV在选定的传输协议里挑节点priority 越小越优先 _sip._udp.pcscf01.ims.example.com. 60 IN SRV 10 60 5060 pcscf01-a.ims.example.com. _sip._udp.pcscf01.ims.example.com. 60 IN SRV 20 40 5060 pcscf01-b.ims.example.com. ; A/AAAA最终落到具体IP pcscf01-a.ims.example.com. 60 IN A 192.0.2.11 pcscf01-b.ims.example.com. 60 IN A 192.0.2.12NAPTR记录里的service字段SIPD2U表示SIP over UDPSIPD2T表示SIP over TCP。flags字段为s时表示接下来要走SRV查询如果replacement字段非空就直接用该域名继续查SRV如果replacement为空才用regexp从原URI拼出目标。这一段是最容易踩坑的地方regexp和replacement同时为空或写错都会导致SIP URI被拼成无法解析的地址。参数调整时注意几个值order决定多个NAPTR的执行顺序越小越先尝试preference是同一order下的优先级SRV记录里priority越小越优先weight越大分配比例越高TTL在容灾场景建议调到30到60秒宁可牺牲一点DNS缓存性能也要换切换速度。日常验证命令是dig NAPTR ims.example.com和dig SRV _sip._udp.pcscf01.ims.example.com。3.3 号码分析表怎么设计最少要有的六列号码分析表是所有路由节点都在用的实际转发表不同厂家叫法不同可能是拨号计划、路由选择表或号码变换表但内容大同小异。一张能用的号码分析表最少要有六列。序号呼叫来源被叫号码前缀主叫变换被叫变换下一跳目标1本域13/15/18开头去0、去86保留E.164并转SIP URIscscf01.ims.example.com2本域0开头去0加区号后转PSTN网关pstn-gw01.ims.example.com3他域来话86开头保留主叫号码按被叫前缀转S-CSCFicscf01.ims.example.com匹配规则上前缀匹配尽量用最大匹配131和13同时存在时让长前缀优先否则短前缀会把呼叫截走。变换顺序固定为先分析号码、再组装URI、最后解析DNS不要在中间环节混入域名改写。如果同一前缀有多个下一跳还需要在表里加权重列按比例负载。需要特别提醒的是号码分析表不是只在SBC上有。I-CSCF关心域间入口地址S-CSCF关心本地用户是否可达P-CSCF关心需要转给哪个核心路由节点。各节点规则不同但最好统一维护一张源表再生成节点专版避免手工改出不一致。很多人加班割接就是因为SBC和S-CSCF的号码分析规则各改了一半。4. 从注册到呼叫逐跳落地Route头、S-CSCF选择与SBC媒体路由4.1 注册阶段的归属路由怎么找到用户的S-CSCF注册阶段的路径可以分成五步。第一步终端发Register请求URI写归属域名例如sip:ims.example.com终端不知道P-CSCF地址时由接入SBC配置指定。第二步SBC收到请求后把它转给本域P-CSCFP-CSCF在请求中加入Path头记录用户接入路径再转给I-CSCF。第三步I-CSCF通过Cx接口向HSS发UAR携带公共用户标识HSS返回允许使用的S-CSCF能力集。第四步I-CSCF按能力集选择一个S-CSCF并通过Mw接口把注册请求转过去。第五步S-CSCF完成鉴权和注册保存向用户返回200 OK。参数方面I-CSCF对HSS查询超时通常设2到3秒S-CSCF选择重试次数建议3次。HSS返回多个S-CSCF候选时先按维护状态过滤再做负载分配。注册阶段失败时重点看UAR/UAA消息里的结果码SIP层反复401通常不是密码问题而是HSS侧数据或S-CSCF选择逻辑出了问题。这里最容易忽略的是归属域名的一致性。如果SBC配置的域是ims.example.com而I-CSCF配置的是scscf.ims.example.com注册请求会在SBC和I-CSCF之间反复被拒抓包看到的却是401和403。处理办法是开局时把归属域名写进统一配置文件任何节点不单独自定义。4.2 呼叫阶段的逐跳转发Route Set与Route头顺序注册阶段建立的路由关系在呼叫阶段靠Route头和Record-Route体现。一次本域呼叫主叫SBC发出的Invite里Route头应依次指向S-CSCF和P-CSCFS-CSCF处理完把自己弹出再把请求转到被叫侧S-CSCF被叫侧继续按被叫注册时记录的Path转发。一个典型的Invite长这样INVITE sip:8613801234567ims.example.com SIP/2.0 Via: SIP/2.0/UDP sbc01.ims.example.com;branchz9hG4bK-7A1 Route: sip:scscf01.ims.example.com;lr,sip:pcscf01.ims.example.com;lr Path: sip:pcscf01.ims.example.com;lr Contact: sip:UE192.0.2.101 P-Asserted-Identity: 主叫用户 sip:8613800000000ims.example.com Content-Type: application/sdpRoute头里带lr参数时为松散路由每个节点按顺序处理完就弹出自己。Route头顺序反了请求会先到P-CSCF再到S-CSCFS-CSCF看到的路径边界不完整业务触发逻辑就可能不执行。所以看抓包不要只盯Request-URI要看Route和Path的组合关系。跨域呼叫时主叫S-CSCF把被叫号码转成被叫域可解析的SIP URI再通过NAPTR查询被叫域的I-CSCF地址把Invite传过去。被叫域I-CSCF查HSS确认被叫是否已注册然后路由到被叫S-CSCF。这个环节最常见的故障是号码只转成了tel URI没有替换成被叫域SIP URI下一跳拿到的Request-URI无法在DNS里解析。域间转发前要检查Request-URI的域名是不是本域如果还是本域说明号码分析变换没有生效。4.3 SBC与媒体路由信令和媒体不一定要走同一条路SBC在路由组织里除了转信令还要决定媒体路径。常见两种信令锚定加媒体旁路以及信令媒体全锚定。模式信令路径媒体路径适用场景主要成本信令锚定媒体旁路SBC转发终端之间直连NAT少、带宽敏感的核心网对防火墙和NAT要求高信令媒体全锚定SBC转发媒体经SBC转发NAT穿越、企业接入、安全要求高额外带宽和转发性能全锚定模式下SBC要配置媒体端口范围例如UDP 10000到20000并检查SDP里的c行和o行是否都被改写为SBC自身地址。常见翻车场景是只改了c行、没改o行对端按旧地址发送RTP结果媒体单通。企业接入场景里很多网关在配置SIP语音中继时只填了trunk对端地址忘了把IMS注册域名映射到P-CSCF的IPtrunk能起来但注册永远失败。正确做法是在接入路由器的SIP trunk配置里指定IMS域名和DNS解析路径再开启注册保活机制。媒体路径一旦选错前面信令路由调得再准都是白费。方案里最好把每个SBC节点的媒体模式单独列出来而不是只写一份网元清单这样后续扩容时才知道哪些节点必须配端口转发哪些可以直连。5. 路由组织避坑与排查五个现场故障和一条定位主线5.1 先看三个状态点再看全套配置路由组织出问题时我一般不看全套配置先问三个问题用户注册状态在不在S-CSCF呼叫的Route头顺序对不对媒体SDP里的地址有没有被正确改写。这三问分别对应注册路由、会话路由、媒体路由三层定位范围一下子缩小到一两个节点。看注册状态在P-CSCF或SBC上看注册绑定表包括用户Contact、Path、注册时长和保活周期再到HSS侧看用户签约和S-CSCF归属确认不是查询数据坏了。看Route顺序抓一条正常Invite对照方案里的预期路由集本域呼叫一般先S-CSCF后P-CSCF被叫侧再按被叫注册的Path走。凡是Route为空或顺序反了先查SBC的Record-Route和S-CSCF的路由策略。看媒体地址比较SDP的c行与o行如果信令里SDP写的是SBC地址但RTP还是终端内网地址基本就是媒体锚定没开或端口映射失效。5.2 五个典型坑现象、原因、解决第一个坑用户注册成功一呼叫就超时或404。现象是Register每次都200 OKInvite发出去后对端不回任何SIP消息。原因是呼叫阶段的Request-URI走了另一套解析号码分析时没把tel URI转成可解析的SIP URI或者下一跳域名指向了根本没部署服务的地址。解决方法是把号码分析后的URI打到日志里dig解析该域名确认最终A记录存在再开一次呼叫就能定位是哪一跳断了。第二个坑跨域呼叫被转回本域形成路由循环。现象是一条他域来话在核心网里转了好几跳Via头里反复出现同一个域名。原因是号码分析表里他域来话的默认规则优先级高于精确的本域被叫规则所有号码都先中了默认项。解决方法是让本域号段排在默认规则之前并开启最大前缀匹配同时确认默认下一跳不要指向自己。第三个坑主备切换后新呼叫全部失败。现象是S-CSCF或SBC主节点维修后所有新呼叫超时老呼叫不受影响。原因是DNS的NAPTR/SRV TTL太长对端节点缓存了故障主节点IP或者各节点之间没有健康检查机制。解决方法是把相关记录TTL从默认的300秒或600秒调到30到60秒核心网内再加检测脚本确认故障节点失效后及时摘除SRV权重紧急时先在对端临时改静态IP恢复后再改回。第四个坑企业网关或漫游用户注册正常媒体单通。现象是双方都显示呼叫已建立但听不到声音SIP层没有任何错误。原因是SBC只做了信令锚定媒体经过NAT后端口不通或防火墙只放行了SIP信令端口。解决方法是给SBC配置媒体转发端口范围确认两方向UDP端口都放行并开启端口复用减少NAT映射数量。第五个坑主叫显示号码不对或被叫号码多加了前缀。现象是呼叫能通但对方看到的主叫号码缺区号或多0业务平台也收到错号码。原因是主叫变换和被叫变换在两端各做了一次两段规则不能抵消。解决方法是把主叫变换和被叫变换分开维护并做三组对照测试本域到本域、本域到他域、他域到本域以实际展示的P-Asserted-Identity为准而不是以呼叫前的输入号码为准。5.3 定位路线的三条命令与一个习惯# 1) 看域内节点解析结果确认下一跳域名没有断 dig short NAPTR ims.example.com dig short SRV _sip._udp.scscf01.ims.example.com # 2) 抓一条带 Route/Path 的 SIP INVITE看逐跳顺序 tshark -i eth0 -Y sip.Method\INVITE\ -T fields \ -e sip.request-uri -e sip.route -e sip.path # 3) 确认媒体双向收包观察两个方向的RTP速率 tshark -i eth0 -Y rtp -q -z io,stat,5命令1解决域名到IP的下一跳断没断命令2解决路由集的逐跳顺序是否符合设计方案命令3解决媒体路径通不通。抓包时可以加上udp.port5060作为过滤条件降低噪声用io,stat的5秒窗口观察RTP包速率能直接看出是单向还是双向丢包。我自己的习惯是每次改号码分析表或DNS记录之前先抄下当前一条成功呼叫的Route头和Path改完再打一通同样号码对比两个版本的差异。这个习惯能最快暴露哪一次修改破坏了路由组织也避免半夜割接时反复试错。6. 最小IMS路由方案怎么验证环境搭建与验收清单6.1 三台主机就能把路由流程跑通如果手头没有现成的IMS核心网可以用开放源码的SIP服务器模拟P-CSCF和S-CSCF再加一个DNS服务器和一个SIP终端就能把路由组织主流程跑通。建议用三台虚拟机一台跑DNS一台跑SIP路由节点一台当话机或信令发生器。第一步划好域名和IP段域名统一用ims.example.com所有节点用A记录直连开局阶段不开NAPTR也能验证基本逻辑。第二步在DNS上把NAPTR/SRV/A记录按第3章的片段建好TTL先设60秒。第三步启动SIP服务器配置号码分析表让被叫号码能映射到目标SIP URI。第四步用SIP话机或sipsak按主叫到节点再到被叫各打一遍抓包看Route头顺序和RTP双向情况。6.2 一份可以直接照做的验收清单验证项操作通过标准注册发起Register200 OKPath被S-CSCF记录SBC有注册绑定表本域呼叫同域两号码互拨信令按Route顺序到达S-CSCFRTP双向跨域呼叫不同域号码互拨I-CSCF解析到目标域入口Request-URI域名正确号码变换分别拨打带0、不带0、带86号码主叫P-Asserted-Identity与被叫URI符合方案容灾切换停掉主S-CSCF新注册在1分钟内被SRV权重切到备用节点原呼叫不受影响这套清单拿到现网同样适用只是现网还需要加设备巡检和业务平台探针。建议把注册和呼叫测试做成每分钟自动跑一趟的探针保留90天SIP响应码和RTP统计趋势作为下一次割接的验收依据。我经历过最难受的一次排障是号码分析表里主叫变换顺序写倒拨出测试全好、呼入测试全乱。后来养成一个习惯改路由前先dig目标域名再做一次本域呼叫和跨域呼叫对比两者结果不一致时优先怀疑号码分析表或Route头而不是查媒体。按这个顺序逐项验证能把IMS网络路由组织方案里的地址规划、DNS、号码表、S-CSCF选择和SBC媒体模式全部串起来遇到翻车时也知道从哪一层先下手。希望帮到你。本文还有配套的精品资源点击获取
返回列表